据我所知,我正在通过本书完成所有工作,但.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世界中比我更有经验的人都会对此感到高兴,因为我已经把头发拉出来了,所以非常感激; - )
答案 0 :(得分:3)
HttpWebRequest类实际上不会在第一个请求上发送Authorization
标头,即使使用PreAuthenticate = true
也是如此。只要您使用相同的 Authorization
实例,它就会在后续调用同一领域时发送CredentialsCache
标头。 Some recommend adding the headers explictly