2012-04-18 49 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株系

相關問題