我正在尝试运行以下代码,它在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应用程序时,它运行正常并返回所需的数据。 但是当我主持这个应用程序时,我得到了上述错误。我做错了什么。
答案 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之前,您应该首先在浏览器中进行检查。在浏览器中输入您的链接,看看它是否显示您想要的内容。