Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在307重定向后为基本HTTP身份验证设置自动生成的SOAP客户端_C#_Wcf - Fatal编程技术网

C# 在307重定向后为基本HTTP身份验证设置自动生成的SOAP客户端

C# 在307重定向后为基本HTTP身份验证设置自动生成的SOAP客户端,c#,wcf,C#,Wcf,我通过VisualStudio中的“添加服务引用…”向导自动生成的客户端使用SOAP Web服务。服务的调用方式如下: //Ag stands for Augo Generated using (AgClient client = new AgClient()) { AgRequest request = new AgRequest(); request.Data = "X"; client.Method(request); } 客户端绑定的XML配置: <cus

我通过VisualStudio中的“添加服务引用…”向导自动生成的客户端使用SOAP Web服务。服务的调用方式如下:

//Ag stands for Augo Generated
using (AgClient client = new AgClient())
{
    AgRequest request = new AgRequest();
    request.Data = "X";
    client.Method(request);
}
客户端绑定的XML配置:

<customBinding>
    <binding name="CB">
        <textMessageEncoding messageVersion="Soap11" />
        <httpTransport authenticationScheme="Basic" />
    </binding>
</customBinding>

在服务提供商引入负载平衡器之前,这一切都很好。平衡器将HTTP重定向发送回其中一个“真实”端点。可能的地址集是固定的。在此设置中,请求身份验证失败。对网络流量的调查表明,当SOAP信封被投递时,会返回HTTP 307临时重定向。客户端足够智能,可以向指定地址发出新请求,但在收到401未经授权的响应后失败

我想将客户端配置为在收到401响应后发送第二个HTTP POST请求,并设置身份验证头

我理解,默认情况下,不向307响应中返回的“随机”地址发送凭据是一种安全措施,但在这种情况下,可能的重定向地址是预先知道的。我如何设置客户端,使其以这种方式运行

所有类似的问题都是不同的,因为它们似乎都是在离连线更近的客户机对象上操作的,所以这种低级设置似乎比生成的客户机类更简单。 例如,关于HttpClient和HttpWebRequest。
如何在生成的客户端上实现同样的效果?

为什么您会收到307响应?是因为该服务现在托管在新地址中吗?在这种情况下,首先配置客户端到正确的地址难道没有意义吗?因为负载平衡器就是这样工作的。我已经编辑了这个问题。配置新地址是可能的,但遵循重定向会更好(请记住,307是临时重定向,配置一个返回的地址将是永久性的)为什么您会得到307响应?是因为该服务现在托管在新地址中吗?在这种情况下,首先配置客户端到正确的地址难道没有意义吗?因为负载平衡器就是这样工作的。我已经编辑了这个问题。配置新地址是可能的,但遵循重定向会更好(请记住,307是临时重定向,配置一个返回的地址将是永久的)