我正在更新一个我们已经使用了10多年的旧工具,它类似于SoapUI,但基于C#。原始代码使用此函数连接到WCF Web服务并下载WSDL信息:
DiscoveryClientProtocol discoveryClientProtocol = new DiscoveryClientProtocol();
discoveryClientProtocol.AllowAutoRedirect = true;
discoveryClientProtocol.UseDefaultCredentials = true;
discoveryClientProtocol.DiscoverAny(serviceDescriptionURL.URL);
discoveryClientProtocol.ResolveAll();
我们最近将我们的WCF Web服务迁移到云,我需要能够将所有请求的身份验证头发送到URL。我知道DiscoveryClientProtocol是从HttpWebClientProtocol和WebClientProtocol继承的,但到目前为止,我还没有弄清楚如何修改代码以包含头。
我尝试过使用CookieContainer()集合来查看添加System .NET.Cookie是否会转换为身份验证标头,但到目前为止,所有添加cookie的尝试都失败了,并出现了各种错误消息。我不知道这是否是正确的路径。
我还使用Fiddler捕获了我的流量,可以看到请求遇到了预期的身份验证错误。如果我使用正确的头部在Fiddler中重新运行请求,它可以正常工作。我只需要了解是否有一种方法可以通过编程方式添加该头部。
这可能吗?如果可以,我需要做什么来添加标头或身份验证?
先谢谢你了!
1条答案
按热度按时间yyyllmsg1#
感谢另一个张贴(谁也碰巧回答自己的问题),我能够弄清楚我需要做什么.这里是他们的问题/答案的链接参考:
adding http headers in call to SoapHttpClient service
解决方案是扩展DiscoverClientProtocol类,然后覆盖底层的GetWebRequest方法。下面是我所做的示例:
希望这有助于任何人可能发生同样的情况出现!