我用下面POST「操作」配置REST風格的WCF:寧靜的WCF POST問題
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/Test", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json)]
void PostTest(Stream stream);
在我的web.config中,我配置如下:
<service name="MyTest.TestSvc" behaviorConfiguration="MyTest.TestBehavior" >
<endpoint address="" behaviorConfiguration="MyBehavior" binding="webHttpBinding" contract="MyTest.ITestSvc"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
<endpointBehaviors>
<behavior name="MyBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="MyTest.TestBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
當我送使用「text/plain的」 一個POST消息或「JSON」一切工作正常。 然而,當我嘗試發送POST消息 的ContentType =「應用/ JSON」 它失敗,出現以下消息: 遠程服務器返回一個錯誤:(400)錯誤的請求
的我找到的唯一解決方案是定義Factory類:System.ServiceModel.Activation.WebServiceHostFactory int Svc定義標記。
我發現下面的鏈接此解決方案: Send JSON to WCF 3.5 using Ajax
我的理解,如果你不想編輯web.config定義WebServiceHostFactory纔有用。
如何在不定義WebServiceHostFactory的情況下使其工作?
請注意,我成功獲取「json」內容類型的POST消息,但未獲取「application/json」內容類型。