繁体   English   中英

以编程方式连接到Report Server时,C#-HttpWebRequest返回400 Bad请求

[英]C# -HttpWebRequest returns 400 Bad request when connecting to Report Server programmatically

我正在以编程方式从一个asp网页生成一个Http Web请求来报告服务器,该网页存在于另一个远程机器中以下载报告(URL访问 - SSRS)

当我直接输入URL时,浏览器会询问我的凭据,当我输入凭据时,报表会自动在浏览器中下载,但是当我以编程方式发出请求时,我会收到下面提到的错误。

C#代码:

string username="abc", password="123";
string url = @"http://ServerName/ReportingPath&Parameter1=123&rs:Format=PDF";
String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password));                
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);                
request.Headers.Add("Authorization", "Basic " + encoded);
request.PreAuthenticate = true;
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 11.0; Windows NT 6.0; WOW64; " +
                "Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; " +  ".NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618; " +
                "InfoPath.2)";                
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

当我提供用户名为“domain / abc”或“abc @ domain”时,我收到HTTP 400-bad-request,当我发出此声明时也会出现

request.Credentials = new NetworkCredential(username,password,domain);

而不是line->

request.Headers.Add("Authorization", "Basic " + encoded);

如果我简单地提供用户名,剥离域名,如username =“abc”,我会收到401-Unauthorized错误。

当我在互联网浏览器中输入URL时,我没有得到任何错误400或401。 当它要求凭据时,我将username指定为“domain / abc”,将密码指定为“123”

我的报表服务器的webConfig文件是这样的..

<Authentication>
<AuthenticationTypes>
        <RSWindowsBasic/>
</AuthenticationTypes>
<RSWindowsExtendedProtectionLevel>Off</RSWindowsExtendedProtectionLevel>
<RSWindowsExtendedProtectionScenario>Proxy</RSWindowsExtendedProtectionScenario>
<EnableAuthPersistence>true</EnableAuthPersistence>
</Authentication>

任何有关这方面的帮助将不胜感激。

您可以尝试将URL设置为http://abc:123@ServerName/ReportingPath&Parameter1=123&rs:Format=PDF且无需身份验证。

它是HTTP中基本身份验证的一部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM