C# 在307重定向后为基本HTTP身份验证设置自动生成的SOAP客户端
我通过VisualStudio中的“添加服务引用…”向导自动生成的客户端使用SOAP Web服务。服务的调用方式如下: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
//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是临时重定向,配置一个返回的地址将是永久的)