2

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

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

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 прибывает в точку построения Notification Url, которая выполняется внутри интерфейса IUrlResolver, возникает ошибка.

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

Любые советы были бы высоко оценены.

ответ

2

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

+0

решил вернуть проект назад к предыдущей версии, которая включала транзакционную услугу в проекте форм, отлично работает, как и раньше, за совет Pablo – CryoFusion87