IIS从传出请求中删除授权标头

时间:2018-07-08 14:13:26

标签: c# wcf iis asp.net-web-api soap

我正在基于现有SOAP XML服务开发REST API(ASP.NET Web API)包装。想法是我的API从客户端获取请求,然后内部调用现有的SOAP API,对接收到的响应进行一些操作,并将修改后的数据作为RESTful响应返回给客户端。 SOAP服务托管在其他服务器上。我正在Web API中使用从SOAP服务的WSDL生成的代理类。我正在以编程方式将授权标头添加到SOAP请求-

private static Dictionary<string, string> GetHttpHeader()
    {
        string userName = "xxxxxxxxxx";
        string passWord = "xxxx";

        var httpHeaders = new Dictionary<string, string>();

        httpHeaders.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes(userName + ":" + passWord)));
        // httpHeaders.Add("Accept-Encoding", "gzip");

        return httpHeaders;
    }

在发送这样的请求之前,此标头已添加到EndpointBehavior-

        try
        {
            req.TargetBranch = Constants.TargetBranch;
            var httpHeaders = GetHttpHeader();
            client.Endpoint.EndpointBehaviors.Add(new HttpHeadersEndpointBehavior(httpHeaders));

            lowFareSearchRsp = client.service(null, req);

            return rsp;
        }
        catch (Exception e)
        {                
            client.Abort();
            throw e;
        }

从Visual Studio运行时,此方法工作正常。但是,当我将其托管在IIS中时,问题开始出现。我已经尝试过IIS 7.5和IIS 10.0。

我的应用程序池使用内置的Identity-LocalSystem,并且REST API通过身份验证进行托管。我也尝试了其他组合-结果相同。

我已经使用提琴手将请求的标头与SOAP进行比较-从Visual Studio运行时以及从IIS运行应用程序时。

明显的区别是,在IIS传出请求的情况下,我添加到SOAP服务请求的标头不存在。

我很困惑-有人可以告诉我这里出了什么问题吗?

0 个答案:

没有答案