2

我尝试将SagePayMvc.dll集成到ASP.NET Web API项目中,该项目需要传递ControllerContext.RequestContext以形成通知URL。在web api控制器中使用ControllerContext.RequestContext

目前我遇到在实现这一目标有些困难,我需要从这个网页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; 
    } 

} 

我试图在SagePayHelper实例下面添加一个公共ControllerContext controllerContext = new ControllerContext()并随后加入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 MVC内容,否则它很难在ASP.NET Web API中重用。我认为使用ASP.NET MVC调用期望MVC上下文的方法会更容易。

+0

决定恢复项目回到以前的版本,其中包括在形式项目中的交易服务,工作正常以前感谢您的建议巴勃罗 – CryoFusion87 2013-05-01 12:38:28