我正在尝试提供特定的域凭据来访问我的报告服务器上的报告。如果我使用默认凭据(不提供实际信用),它可以正常工作,因为我可以访问我的报表服务器。一旦我硬编码我的凭据(并禁用默认凭据),它就会给我一个 401 异常(请求失败,HTTP 状态 401:未授权。)
comboBox1 是一个组合框(显然),每个服务器都可用
urlText 是 Web 服务 url 的文本字段
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 有关。就像现在一样,通过网络界面不会提示输入凭据(我不知道这是否重要,只是更多信息)。
这是认证部分
<Authentication>
<AuthenticationTypes>
<RSWindowsNegotiate/>
</AuthenticationTypes>
<RSWindowsExtendedProtectionLevel>Off</RSWindowsExtendedProtectionLevel>
<RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionScenario>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>