我有一个类,它使用HttpWebRequest发布一些XML并收回一些XML。这一切都适用于Windows应用程序,但当我在ASP.Net Web端使用它时,我得到WebException“无法连接到远程服务器”。我认为这与通过我的公司代理商有关。但我不确定如何设置凭据以便它可以在网页中工作。下面是发布XML的代码(m_Credentials已使用“CredentialCache.DefaultCredentials”设置:
private string PostData(string url, string postData)
{
HttpWebRequest request=null;
Uri uri = new Uri(url);
request = (HttpWebRequest) WebRequest.Create(uri);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postData.Length;
// Tell it to use our credentials else we may not get through
if (m_Credentials != null)
{
request.Proxy.Credentials = m_Credentials;
}
using(Stream writeStream = request.GetRequestStream())
{
UTF8Encoding encoding = new UTF8Encoding();
byte[] bytes = encoding.GetBytes(postData);
writeStream.Write(bytes, 0, bytes.Length);
}
string result=string.Empty;
using (HttpWebResponse response = (HttpWebResponse) request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader readStream = new StreamReader (responseStream, Encoding.UTF8))
{
result = readStream.ReadToEnd();
}
}
}
return result;
}
答案 0 :(得分:1)
以下是发布XML的代码(m_Credentials已设置为 使用“CredentialCache.DefaultCredentials”
这可能是个问题。在Windows应用程序中,用于通过代理进行身份验证的凭据将是当前登录用户的凭据。在ASP.NET应用程序中,使用的凭据将是运行asp.net进程的本地服务帐户中的凭据。一种选择是将凭据设置为网络上的实际有效帐户。
request.Credentials = new NetworkCredential("username","password","domain");
答案 1 :(得分:0)
尝试在此处输入值:
request.Credentials = new NetworkCredential(cre.Username, cre.Password, cre.Domain);
如果你不想每次都发送,你也可以使用CredentialCache。)
CredentialCache cache = new CredentialCache();
Uri prefix = new Uri ("http://exchange.somedomain.com");
cache.Add (prefix, "Digest", new NetworkCredential ("joe", "passwd"));
cache.Add (prefix, "Negotiate", new NetworkCredential ("joe", "passwd"));
答案 2 :(得分:0)
问题可以归结为我需要为请求设置代理
request.Proxy = new WebProxy(m_ProxyAddress);
IE中的代理地址是一个java的,它返回了使用
的真实地址感谢您的帮助 GAV