远程服务器返回错误:(401)未经授权在System.Net.HttpWebRequest.GetResponse()

时间:2015-09-18 12:40:28

标签: c# asp.net iis

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

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

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并将我的凭据作为Network Credentials传递。 当我在本地计算机上运行此Web应用程序时,它运行正常并返回所需的数据。 但是当我主持这个应用程序时,我得到了上述错误。我做错了什么。

1 个答案:

答案 0 :(得分: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之前,您应该首先在浏览器中进行检查。在浏览器中输入您的链接,看看它是否显示您想要的内容。