我已经配置了一个RESTful的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的”或“JSON”一切工作正常。 然而,当我尝试发送POST消息的ContentType =“应用/ JSON”它失败,出现以下消息: 远程服务器返回错误:(400)错误的请求
这是我发现的唯一的解决办法是定义工厂类:System.ServiceModel.Activation.WebServiceHostFactory诠释了SVC定义标记。
我发现这个解决方案在以下链接: 使用Ajax JSON发送到WCF 3.5
我的理解,定义WebServiceHostFactory如果你不想编辑web.config才有用。
我怎样才能使它没有确定WebServiceHostFactory工作?
请注意,我成功获得“JSON”内容类型POST消息,但并不是“应用/ JSON的”内容类型。