2012-05-04 45 views
0

有人可以幫我嗎?我打開ASMX爲的XMLDocument,我用下面的代碼:將ASMX服務加載爲XMLDocument

string url = "http://www.*******.com/WebService.asmx/Test"; 
    wsResponse.Load(url); 
    string XMLDocument = wsResponse.InnerXml; 
    Response.ContentType = "text/xml"; 
    Response.Write(XMLDocument); 

在生產服務器我receved Server內部錯誤,它是在共享主機。在本地主機上,Web服務成功使用。 Web服務返回一個簡單的字符串作爲「服務測試」 該服務是HTTP請求獲取

什麼可以導致該問題,我該如何解決它。

P.S.我嘗試使用這種方法,因爲共享主機他們,他們suddendly停止支持跨域網絡服務消費,所以無法通過ajax

enter image description here

回答

0

也就是說,可以肯定,是一種不可思議的方式消費服務查詢Web服務。通常,您添加服務引用/代理類並在web.config中指定服務端點。

你可以讀到這裏:http://msdn.microsoft.com/en-US/library/y92e0td0.aspx

如果您不能使用無論出於何種原因這種方法,我想(這是單位理論),您可以聲明一個HttpRequest與您的網絡服務的網址,並得到響應,字符串

1

任何以「5」開頭的HTTP錯誤代碼都是服務器錯誤。這意味着它是你的服務中的一個未處理的異常。當您以這種方式訪問​​服務時,可能只會發生異常,但服務中肯定存在異常。

查看應用程序事件日誌以查看是否記錄了例外的詳細信息。否則,請調試服務,或者查看服務可能會記錄異常的其他位置。

僅供參考,當您以這種方式訪問​​服務時,您使用的是HTTP GET動詞。在服務的web.config中,您需要啓用HttpGet協議。它默認情況下禁用,你將需要啓用它:

<configuration> 
    <system.web> 
    <webServices> 
     <protocols> 
      <add name="HttpGet"/> 
     </protocols> 
    </webServices> 
    </system.web> 
</configuration> 

最後,我只是想確保你知道ASMX技術是一種過時的技術,並且不應該被用於新的開發。

+0

10倍的答案,是的,我知道,ASMX是一個古老的技術,但該項目是建立一個很久以前的事我不會用最小的努力來解決它。 「HttpGet」也在web.config中設置。我看看主機面板,並沒有找到從哪個地方訪問應用程序日誌,無論如何,我會問suuport。 – Tiho

0

看來問題出在遠程服務器上,因爲它期望有效的用戶代理。

這裏的修復:

var m_strFilePath = "http://www.google.com/ig/api?weather=12414&hl=it"; 
     string xmlStr; 
     using (var wc = new WebClient()) 
     { 
      wc.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); 
      TaskCompletionSource<string> tcs = new TaskCompletionSource<string>(); 
      xmlStr = wc.DownloadString(m_strFilePath); 
     } 
     xdoc.LoadXml(xmlStr); 

這裏的#1網站的文章: webclient The remote server returned an error: (500) Internal Server Error