我正在尝试提供特定的域凭据来访问我的报告服务器上的报告。如果我使用默认凭据(不提供实际信用),它可以正常工作,因为我可以访问我的报表服务器。只要我对我的凭据进行硬编码(并禁用默认凭据),它就会给我401异常(请求失败,HTTP状态为401:未经授权。)
comboBox1是一个组合框(显然),每个服务器都可用
urlText是网络服务网址的文本字段
comboBox1.Items.Clear();
var rs = new ReportingService2005
{
Url = urlText.Text,
//any of those three work
//Credentials = System.Net.CredentialCache.DefaultCredentials,
//Credentials = System.Net.CredentialCache.DefaultNetworkCredentials
UseDefaultCredentials = true
//This doesn't work
//Credentials = new NetworkCredential("user", "pass", "domain")
};
// get catalog items from the report server database
var items = rs.ListChildren("/", true); <------exception on this line---------
foreach (var item in items)
{
if (item.Type == ItemTypeEnum.Report)
comboBox1.Items.Add(item.Path);
}
据我所知,这应该是所有需要的。它可能与rsreportserver.config有关。就像现在一样,通过Web界面不会提示输入凭据(我不知道这是否重要,只是更多信息)。
以下是身份验证部分
<Authentication>
<AuthenticationTypes>
<RSWindowsNegotiate/>
</AuthenticationTypes>
<RSWindowsExtendedProtectionLevel>Off</RSWindowsExtendedProtectionLevel>
<RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionScenario>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>