代码之家  ›  专栏  ›  技术社区  ›  Mark Rendle

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

  •  0
  • Mark Rendle  · 技术社区  · 14 年前

    我正在编写一个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;
        }
    }
    

    编辑:Fiddler显示最初的调用得到了307重定向,可能是因为azuredev结构。.NETWeb类是否太愚蠢而无法在重定向上重新发送授权头?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Mark Rendle    14 年前

    答案是,WebClient需要在URL的末尾加一个/(失败)