我正在开发一个 Intranet 应用程序(Windows 身份验证),它从报告服务器下载报告流,然后将其保存为文件。当我在调试模式下运行它时,它工作正常。代码如下:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.UseDefaultCredentials = true;
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
Stream fStream = response.GetResponseStream();
但是,在我将它部署到服务器后,它不会得到响应,而是得到 401 未经授权的错误。
即使我将代码更改为: HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
string domain = ConfigurationManager.AppSettings["SchedulerDomain"];
string userName = ConfigurationManager.AppSettings["SchedulerUser"];
string passWord = ConfigurationManager.AppSettings["SchedulerPassword"];
NetworkCredential credential = new System.Net.NetworkCredential(userName, passWord, domain);
req.Credentials = credential;
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
Stream fStream = response.GetResponseStream();
得到同样的错误。代码中的用户设置具有查看/运行报告的权限。
IIS7 正在使用协商和 NTLM。(由于复杂的原因,无法更改 Kerberos),在 ApplicationPoolIdentity 下运行
我的问题是,当我在调试模式下运行它时,用户是我的 windows 帐户,但是为什么当我尝试将凭据发送到报告服务器时它会失败?
任何人都可以帮忙吗?