Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么.NET web请求类在没有身份验证头的情况下重新运行请求?_.net_Authentication_Azure_Webclient - Fatal编程技术网

为什么.NET web请求类在没有身份验证头的情况下重新运行请求?

为什么.NET web请求类在没有身份验证头的情况下重新运行请求?,.net,authentication,azure,webclient,.net,Authentication,Azure,Webclient,我正在编写一个WPF测试应用程序,该应用程序针对一个运行在Azure本地开发结构上的WCF REST服务,并带有一个自定义的基本身份验证提供程序 当测试客户端使用WebClient或HttpWebRequest进行调用时,它会传递授权标头,并且自定义提供程序会对其进行身份验证。然后,服务再次接收相同的请求,但没有身份验证标头。这一切都发生在对request.GetResponse或webClient.DownloadString的单个调用中 请帮帮我,我快疯了 客户端代码: using (var

我正在编写一个WPF测试应用程序,该应用程序针对一个运行在Azure本地开发结构上的WCF REST服务,并带有一个自定义的基本身份验证提供程序

当测试客户端使用WebClient或HttpWebRequest进行调用时,它会传递授权标头,并且自定义提供程序会对其进行身份验证。然后,服务再次接收相同的请求,但没有身份验证标头。这一切都发生在对request.GetResponse或webClient.DownloadString的单个调用中

请帮帮我,我快疯了

客户端代码:

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。我也希望如此,但我在身份验证提供程序中有断点,它肯定会首先通过身份验证获取请求。