[英]Bad Request Error 400 - WCF Client
我的IIS上運行了WCF Web服務。 它從客戶端獲取數據並插入數據庫中。 我的Web服務需要復雜數據類型播放器的對象。 在客戶端中,我創建一個Players對象,並將其傳遞給Web服務以完成工作。
在我的客戶端控制台應用中
string strBaseAddress = ConfigurationSettings.AppSettings["WEBSERVICE"];
Uri baseAddress = new Uri(strBaseAddress);
WebServiceHost host = new WebServiceHost(typeof(TrialCenterAPI), baseAddress);
host.open
// Doing Work
host.close
這個程序工作正常。
現在,當我通過添加服務引用編寫另一個客戶端來執行相同的工作時。 每次都給我400錯誤請求錯誤。
我創建了自動生成的API客戶端的對象,然后調用了適當的Web服務方法,並將Players對象傳遞給了它。 我嘗試使用Google搜索,但沒有任何解決方案。我增加了Server和Client Web Config中的最大大小。
客戶端Web Config使用“自定義綁定”,如下所示:
<system.serviceModel>
<bindings>
<customBinding>
<binding name="WebHttpBinding">
<textMessageEncoding
maxReadPoolSize="2147483647"
maxWritePoolSize="2147483647"
messageVersion="None" writeEncoding="utf-8" >
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</textMessageEncoding>
<httpTransport
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647"/>
</binding>
</customBinding>
</bindings>
<client>
<endpoint name="WebHttpBinding"
address="Service Address/"
binding="customBinding"
bindingConfiguration="WebHttpBinding"
contract="TestClientAPI.API" />
</client>
</system.serviceModel>
任何幫助將不勝感激。
我在msdn中找到一個線程,它說
“這是Web編程模型本身的局限性。與SOAP終結點(即具有BasicHttpBinding,WSHttpBinding等的終結點)不同,SOAP終結點可以通過自身中有關所有操作/參數的信息來公開有關自身的元數據(WSDL或Mex)。端點,目前沒有公開非SOAP端點的元數據的標准方法-正是基於webHttpBinding的端點。簡而言之,WCF測試客戶端對基於Web的端點將無用。當WCF發行其下一版本時,代表Web樣式端點的出現了,我們可能會更新測試客戶端以支持它,但是目前還沒有被廣泛采用。
您可以嘗試的一種替代方法(盡管絕對不是那么簡單/方便)是使用ChannelFactory類(使用服務中使用的相同協定/綁定/行為)在代碼中自己創建測試客戶端(請參見下面的示例)。一些網絡捕獲/重放工具,例如Fiddler(www.fiddlertool.com),用於向該服務發送其他請求。”
鏈接為: http : //social.msdn.microsoft.com/forums/en-US/wcf/thread/deabd25b-a219-4e95-9826-d40dc2f75543
我正在尋找這個確切問題的解決方案。 我可以使用ChannelFactory類或Fiddler使用服務。 我無法使用服務客戶端。 我想在WCF模型中此問題仍然沒有任何進展。
還有一件事,我沒有在服務器的web.config或客戶端的app.config中。 我在服務器Web.config中添加了此代碼,然后出現了另一個錯誤“ System.ServiceModel.ClientBase`1的類型初始化程序引發了異常”。 我也從配置中刪除了webHttpBinding設置。
首先, webHttpBinding
(REST風格)不使用任何這些設置,這些設置僅用於wsHttpBinding
或basicHttpBinding
類的基於SOAP的綁定。
對於WCF REST樣式綁定,您需要確保IIS可以支持更大的傳輸-默認情況下,IIS最大消息大小要大於默認值。
檢查您的web.config-您是否有這樣的條目?
<system.web>
......
<httpRuntime maxRequestLength="32678"/>
......
</system.web>
這是一個以KB為單位的限制-默認值為4096(4 MB)-您可能需要將其增加到一個更高的值。
如果不是導致問題的消息大小,則可能是您的服務引起了異常? 你到底在做什么 上傳或下載文件或其他內容?
渣
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.