WCF POST方法

时间:2013-12-19 07:31:07

标签: c# wcf

  

{“远程服务器返回错误:(405)方法不是   允许} System.InvalidOperationException {System.Net.WebException}

Web配置:

      <service name="Service" behaviorConfiguration="RestService">      
        <endpoint address="web" binding="webHttpBinding"
                  contract="IService" behaviorConfiguration="ServiceBehavior">
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="RestService">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="ServiceBehavior">
          <webHttp />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <!--<protocolMapping>
      <add binding="basicHttpsBinding" scheme="https"/>
    </protocolMapping>-->
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <directoryBrowse enabled="true"/>
  </system.webServer>

服务:

    public test TestPost(test testPost)
    {
        test objtest1 = new test();
        objtest1.Address = "Test";
        objtest1.Name = "Welcome";
        return objtest1;
    }


[DataContract]
public class test
{
    [DataMember(Order = 0)]
    public string Name { get; set; }
    [DataMember(Order = 1)]
    public string Address { get; set; }
}


    [OperationContract]
    [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Bare,
       RequestFormat = WebMessageFormat.Json,
       ResponseFormat = WebMessageFormat.Json,
       UriTemplate = "TestPost/")]
    test TestPost(test i);

使用Fiddler:

POST /RESTfulService/Service.svc/web/TestPost/ HTTP/1.1
User-Agent: Fiddler
Host: localhost:50458
Content-Length: 43

HTTP/1.1 400 Bad Request
Server: ASP.NET Development Server/11.0.0.0
Date: Thu, 19 Dec 2013 07:19:44 GMT
X-AspNet-Version: 4.0.30319
Content-Length: 1647
Cache-Control: private
Content-Type: text/html
Connection: Close

GET方法工作正常,当我尝试使用POST方法时,我收到错误

1 个答案:

答案 0 :(得分:0)

我在我的本地尝试过以上示例,发现您缺少一个名为

的http标头
Content-Type: application/json

还要确保在请求正文中传递正确的json字符串

{"Name" : "test", "Address" : "test"}

以上技巧将帮助您摆脱400个不良请求。