Использование ControllerContext.RequestContext в контроллере веб-API

Я пытаюсь интегрировать SagePayMvc.dll в проект ASP.NET Web API, который требует ControllerContext.RequestContext быть переданным для формирования URL-адреса уведомления.

В настоящее время я испытываю некоторые трудности в достижении этого, мне нужно пройти ControllerContext.RequestContext с этого контроллера веб-API:

public class PaymentStartController : ApiController
{
    private PaymentRepository paymentRepository = new PaymentRepository();
    private SagePayHelper sagePayHelper = new SagePayHelper();

    public Order MakePaymentInitial(Payment payment)
    {
        Order order = new Order();

        order = sagePayHelper.MakePayment(payment, context);
        paymentRepository.InsertVendorTXCode(order.VendorTxCode);
        paymentRepository.InsertInitialPaymentDetails(order, payment);
        return order;
    }

}

Я пытался добавить публичный ControllerContext controllerContext = new ControllerContext() ниже экземпляра SagePayHelper, а затем добавлен var context = controllerContext.RequestContext, проблема с этим ни один из методов внутри RequestContext также создаются, когда SagePayMvc достигает точки создания URL-адреса уведомления, который выполняется внутри IUrlResolver интерфейс выдается ошибка.

Есть ли способ издеваться ControllerContext.RequestContextЯ ранее использовал RhinoMocks или было бы более разумным вернуться к тому, как я ранее реализовал SagePayMvc в проекте форм (проект форм - это приложение MVC 4, которое сериализует и отправляет данные формы в веб-API).

Любой совет будет высоко ценится.

1 ответ

Решение

ASP.NET Web API использует совершенно разные компоненты времени выполнения из ASP.NET MVC для представления контекста и сообщений запроса / ответа. Похоже, что используемый вами API тесно связан с ASP.NET MVC, что затрудняет его повторное использование в ASP.NET Web API, если вы не инициализируете содержимое ASP.NET MVC, выполняя ручные сопоставления. Я думаю, вам будет проще использовать ASP.NET MVC для вызова этого метода, ожидающего контекст MVC.

Другие вопросы по тегам