Использование 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.