簡體   English   中英

錯誤的請求錯誤400-WCF客戶端

[英]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風格)不使用任何這些設置,這些設置僅用於wsHttpBindingbasicHttpBinding類的基於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM