2012-04-18 92 views
1

我有一个类,它使用HttpWebRequest来发布一些XML并接收一些XML。它在Windows应用程序中都很好用,但当我在ASP.Net Web端使用它时,我得到WebException“无法连接到远程服务器”。我认为这与通过我的公司代理服务器有关。但我不确定如何设置证书,以便它可以在网页中使用。下面是职位XML代码(m_Credentials已通过使用“CredentialCache.DefaultCredentials”载:在ASP.NET中使用HttpWebRequest

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

返回的真实地址是一个java scriped?你应该把凭据不要代理....请解释 – 2012-04-18 14:23:51

回答

1

下面是帖子的XML(m_Credentials已 使用“CredentialCache.DefaultCredentials设置代码“

这可能是问题。在Windows应用程序,使用代理服务器进行身份验证凭据将登录用户当前的人。在ASP.NET应用程序,使用的凭据将是那些来自运行asp.net进程的本地服务帐户。一个选项是设置creden您的网络上的实际有效帐户。

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

问题是由于我需要为请求设置代理 – Gav 2012-04-20 12:17:25

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")); 
0

问题被追踪到的事实上,我需要设置代理请求

request.Proxy = new WebProxy(m_ProxyAddress); 

而在IE的代理服务器地址是使用

感谢您使用`request.Proxy.Credentials` WY帮助 GAV株系