远程服务器返回错误:(401) Unauthorized at System.Net.HttpWebRequest.GetResponse()

问题描述 投票:0回答:1

我正在尝试运行以下代码,它在本地主机 IIS 上运行时工作正常,但在我的 Web 服务器 IIS 上托管时返回错误

Error : -- 远程服务器返回错误:(401) 未经授权。在 e:\WebSite1\Default.aspx.cs 中的 _Default.btnsubmit_Click(Object sender, EventArgs e) 处的 System.Net.HttpWebRequest.GetResponse() 处:

try
{

var webAddr = "http://serviceserver/someService";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(webAddr);
httpWebRequest.ContentType = "text/xml";
httpWebRequest.ContentLength = 0;
httpWebRequest.Method = "GET";

httpWebRequest.Credentials = new NetworkCredential("user", "password");
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new treamReader(httpResponse.GetResponseStream()))
   {
       var result = streamReader.ReadToEnd();
       Label1.Text = result;
   }
}
catch (Exception ex)
{
Response.Write(ex.Message);
Response.Write(ex.StackTrace);
Response.Write(ex.InnerException);
}

更新 上面的服务 URL 是 WCF 服务,它通过 Windows 中的传输凭据进行保护 我试图通过我的 Web 应用程序访问此 URL 并将我的凭据作为网络凭据传递。 当我在本地计算机上运行此 Web 应用程序时,它运行良好并返回所需的数据。 但是当我托管这个应用程序时,我收到了上述错误。我是不是做错了什么?

c# asp.net iis
1个回答
0
投票

您需要在服务器上查找用户名、密码以及它是基本的还是摘要的。我这样设置命令:

 HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(uri);
 var cache = new CredentialCache();
 cache.Add(new Uri(uri), "Digest", new NetworkCredential("administrator", "admin"));
 httpRequest.Credentials = cache;
 httpRequest.PreAuthenticate = true;
 using (HttpWebResponse httpResponse = (HttpWebResponse)httpRequest.GetResponse())
 {
    //DO CODE

 }

在代码中实现 httpRequest 之前,您应该先在浏览器中检查它。在浏览器中输入您的链接,看看它是否会显示您想要的内容。

© www.soinside.com 2019 - 2024. All rights reserved.