2013-03-12 99 views
0

在我們的測試服務器上,當我嘗試訪問IIS中託管的WCF服務的URL時,出現HTTP 400錯誤。當我查看服務器上的WCF日誌時,它指出「消息正文不能被讀取,因爲它是空的」。如果我嘗試在同一臺服務器上爲另一個服務做同樣的事情,那麼它可以正常工作,並獲得WSDL的路徑。Web服務IIS7 .net框架4 HTTP 400

我無法通過SoapUI連接到WSDL。但是,我可以連接到Visual Studio的服務。

我見過的大多數帖子在配置文件中提到需要httpGetEnabled="true"。該屬性存在於測試服務器的web.config中。

其他職位提到需要額外的屬性,但我不明白爲什麼他們將需要如果生產服務器沒有他們的工作。

EDIT響應於達文: 這裏是從提琴手原始視圖用於生產請求 GET http://production.svc HTTP/1.1 接受:text/html的,應用/ XHTML + xml的,/ 接受語言:EN -US 的User-Agent:Mozilla的/ 5.0(兼容; MSIE 9.0; Windows NT的6.1; WOW64;三叉戟/ 5.0) 接受編碼:gzip,緊縮 連接:保持活動 主持人:生產

這是提琴手對測試要求的原始觀點 GET http://test.svc HTTP/1.1 Accept:text/html,application/xhtml + xml,/ Accept-Language:en-US User-Agent:Mozilla/5.0(compatible; MSIE 9.0; Windows NT 6.1; WOW64;三叉戟/ 5.0) 接受編碼:gzip,緊縮 連接:保持活動 主持人:測試

這是試圖用IE9連接到服務。

To CodeCaster: 它使用框架4並在asp.net v4.0應用程序池中運行。 Framework 4安裝在服務器上。如果我使用我設置的測試應用程序,則可以連接到該服務並向其中一個方法發送請求,並且工作正常。

我的問題是連接到IE或soapUI的服務,因爲我們的供應商不會在他們的測試系統上更新他們的端點,直到他們能夠這樣做。

+0

什麼是「WCF日誌」?你有沒有啓用跟蹤?在應用程序和池中運行的服務是什麼?什麼.NET版本?服務的配置(特別是綁定)是什麼? .NET 3.5 WCF模塊是否安裝在服務器上? [.NET是否已在IIS中註冊?](http://stackoverflow.com/a/3935871/266143)。請展示一些研究工作。:-) – CodeCaster 2013-03-12 15:03:40

回答

0

HTTP 400是BadRequest。當服務器拒絕請求時會引發此問題,因爲它無法處理請求。在這種情況下,您收到的錯誤消息很有意義。這也意味着服務器能夠找到您的端點。所以,這個問題可能不是httpGetEnabled

你需要做的是看到去往服務器的HTTP消息。爲此,我建議您將客戶端指向代理(fiddler),然後配置fiddler以將請求轉發到服務器。然後你需要確保請求的格式符合你的期望。

+0

「不良請求」響應不僅僅是格式錯誤的消息。 – CodeCaster 2013-03-13 00:39:21