为什么.NET web请求类在没有身份验证头的情况下重新运行请求?
我正在编写一个WPF测试应用程序,该应用程序针对一个运行在Azure本地开发结构上的WCF REST服务,并带有一个自定义的基本身份验证提供程序 当测试客户端使用WebClient或HttpWebRequest进行调用时,它会传递授权标头,并且自定义提供程序会对其进行身份验证。然后,服务再次接收相同的请求,但没有身份验证标头。这一切都发生在对request.GetResponse或webClient.DownloadString的单个调用中 请帮帮我,我快疯了 客户端代码:为什么.NET web请求类在没有身份验证头的情况下重新运行请求?,.net,authentication,azure,webclient,.net,Authentication,Azure,Webclient,我正在编写一个WPF测试应用程序,该应用程序针对一个运行在Azure本地开发结构上的WCF REST服务,并带有一个自定义的基本身份验证提供程序 当测试客户端使用WebClient或HttpWebRequest进行调用时,它会传递授权标头,并且自定义提供程序会对其进行身份验证。然后,服务再次接收相同的请求,但没有身份验证标头。这一切都发生在对request.GetResponse或webClient.DownloadString的单个调用中 请帮帮我,我快疯了 客户端代码: using (var
using (var client = new WebClient())
{
client.Headers.Add(HttpRequestHeader.Authorization, "Basic " +
Convert.ToBase64String(Encoding.ASCII.GetBytes(UserName + ":" + Password)));
try
{
ResponseText = client.DownloadString(BaseAddress + "/" + MethodCall);
}
catch (WebException ex)
{
ResponseText = ex.Message + Environment.NewLine + Environment.NewLine + ex;
}
}
(此版本直接设置授权标头,因为使用WebClient设置凭据似乎根本不起作用。)
编辑:Fiddler显示初始调用得到307重定向,可能是因为Azure开发结构。.NET web类是否太愚蠢而无法在重定向时重新发送授权标头?答案是,WebClient需要在URL的末尾添加一个/。(失败)您确定它在工作验证版本之前显示未验证版本吗?我希望未经身份验证的/401/authenticated。我也希望如此,但我在身份验证提供程序中有断点,它肯定会首先通过身份验证获取请求。