如何将IncomingWebRequestContext转换为HttpRequestMessage类型,反之亦然

时间:2015-05-20 17:04:51

标签: c# wcf asp.net-web-api2

我有一个与WCF Web服务一起使用的类方法,该方法需要和IncomingWebRequestContext参数并返回OutgoingWebResponseContext类型参数。我正在使用将使用此类方法的WEB API应用程序,但我的参数类型为HttpRequestMessage和HttpResponseMessage。 不确定如何投射我的请求和响应以适当地适应方法。可能吗? e.g。

    using System.ServiceModel.Web;
    using System.ServiceModel;

    public OutgoingWebResponseContext myServiceMethod(IncomingWebRequestcontext webRequest)
{ ..... 
OutgoingWebResponseContext webResponse new OutgoingWebResponseContext ();  return webResponse 
}

    //my webApi does this...
    using System.Net;
    using System.Net.Http;

    public class apicontroller{
    public myAPImethod(){
    var myApiRequest = Request;
    HttpWebResponseMessage myApiResponse = new HttpWebResponseMessage();
    myApiResponse = myServiceMethod(myApiRequest);
    }

也许我应该澄清一下。我有一个方法来验证WCF或WEBAPI的headertoken。它是我们通过自己的程序生成和验证的标记。该方法在一个类中定义,而不是仅仅是一个类的apicontroller。我想从我的apicontroller调用这个authenticate方法并向我发送请求该方法将从头分析中提取令牌它将返回一个响应。可能存在多种不同的响应,例如内部错误,未授权等,如果成功,它将从我的业务逻辑类(非apicontroller)调用get数据,然后返回数据并设置响应状态和描述。我已经拥有的当前方法验证令牌是期待wcf参数。 (此方法将与传递WCF请求参数的WCF项目共享)我所做的是创建了另一个期望同一类中的Web API参数的方法。但现在我不确定如何设置WEB API响应。我需要状态和描述。 @JotaBe

1 个答案:

答案 0 :(得分:0)

这不是'看起来是个好主意。我不会重用WCF方法。我改为采用以下方式:

  • 在您的WCF服务中,将业务逻辑提取到另一个类。修改它以便您的WCF上下文仅处理消息传递,而不是执行任何其他操作。那个任务是针对BL课程的,所以你有
    • 依赖于BL类的WCF服务
    • 一个BL课程,"做了辛苦的工作"
  • 您的Web API中的
  • 只需使用新的BL类

希望你已经有了这个BL课程

您的想法看起来并不合理,因为WCF和Web API都依赖于上下文来执行,如果您尝试从Web API中重用WCF,迟早会遇到麻烦,因为您不能提供这种背景。