我正在使用本地 Web 服务器(IIS、Windows 8)测试应用程序,该站点需要基本身份验证,只要我明确传递我的凭据,一切正常:
request.Credentials = new NetworkCredential("User", "Password", "Domain");
request.PreAuthenticate = true;
但是我想使用集成安全性,所以我尝试将第一行更改如下:
request.Credentials = CredentialCache.DefaultNetworkCredentials;
(我也试过 DefaultCredentials)
我用 Fiddler 检查了网络流量,我看到在第二种情况下 Http 请求是在没有授权标头的情况下发送的,所以它失败也就不足为奇了。但为什么?
更新。我相信我误解了默认凭据的概念。DefaultNetworkCredentials 不能用于生成基本身份验证标头,它必须是用户/密码对。所以这种行为是设计使然。