我正在使用自定义基本身份验证提供程序在Azure本地开发结构上运行的WCF REST服务上编写WPF测试应用程序。
当测试客户端使用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;
}
}
(此版本直接设置了Authorization标头,因为使用WebClient设置Credentials似乎根本不起作用。)
编辑:Fiddler显示初始调用正在获得307重定向,可能是因为Azure开发结构。 .NET Web类是否过于愚蠢,无法在重定向上重新发送Authorization标头?
答案 0 :(得分:2)
答案是,WebClient需要在URL的末尾添加/。 (失败)