如何将HTTP Auth凭据发送到非.NET WebService

时间:2009-09-03 22:57:13

标签: .net asp.net vb.net soap

据我所知,我正在通过本书完成所有工作,但.NET客户端在向我的(PHP)SOAP Web服务发出请求时根本不会发送身份验证标头。我已经通过在PHP端记录原始发布数据来验证这一点,并且.NET从不发送任何auth标头。

这是我在我的ExampleWebService Web服务上调用之前运行的代码:

ExampleWebService.PreAuthenticate = true;
NetworkCredential myCred = new NetworkCredential("myusername","mypassword");

CredentialCache myCache = new CredentialCache();
myCache.Add(new Uri(ExampleWebService.Url), "Basic", myCred);
ExampleWebService.Credentials = myCache;

据我所知,PreAuthenticate应该强制在每个请求上发送我的HTTP Basic Auth Credentials,而不管挑战如何。这仅适用于IIS托管服务吗?我没有在任何地方找到这个记录。

任何在.NET世界中比我更有经验的人都会对此感到高兴,因为我已经把头发拉出来了,所以非常感激; - )

1 个答案:

答案 0 :(得分:3)

HttpWebRequest类实际上不会在第一个请求上发送Authorization标头,即使使用PreAuthenticate = true也是如此。只要您使用相同的 Authorization实例,它就会在后续调用同一领域时发送CredentialsCache标头。 Some recommend adding the headers explictly