POST方法在WCF REST服务

问题描述:

我得到了同样的错误:POST方法在WCF REST服务

protected void Button1_Click(object sender, EventArgs e) 
      { 
      BasicHttpBinding binding = new BasicHttpBinding(); 
      binding.ReaderQuotas.MaxStringContentLength = 2000000; 
      binding.MaxBufferSize = 2147483647; 
      binding.MaxReceivedMessageSize = 2147483647; 
      binding.ReaderQuotas.MaxNameTableCharCount = 2147483647; 
      binding.Security.Transport.ClientCredentialTypeHttpClientCredentialType.Windows; 
      binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly; 
      binding.CloseTimeout = new TimeSpan(4, 0, 0); 
      binding.OpenTimeout=new TimeSpan(4, 0, 0); 
      binding.ReceiveTimeout=new TimeSpan(2, 0, 0); 
      binding.SendTimeout = new TimeSpan(5, 0, 0); 
      EndpointAddress endpoint = new EndpointAddress(new Uri("http://localhost:35798/RestServiceImpl.svc")); 
      RestPostService.RestServiceImplClient obj = new RestPostService.RestServiceImplClient(binding, endpoint); 
      RestPostService.EmailDetails obj1 = new RestPostService.EmailDetails(); 
      obj.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials; 
      RestPostService.EmailDetails obj2=obj.SendMail(obj1); 
     } 


**web.config** 
<?xml version="1.0"?> 
<configuration> 

    <system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <system.serviceModel> 
    <bindings> 
     <webHttpBinding> 
     <binding name="webHttpBinding" maxBufferSize="2147483647" maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647" closeTimeout="00:01:00" 
       openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"/> 
     </webHttpBinding> 
    </bindings> 
    <services> 
     <service name="RestService.RestServiceImpl" behaviorConfiguration="ServiceBehaviour"> 
     <endpoint address ="http://localhost:35798/RestServiceImpl" binding="webHttpBinding" contract="RestService.IRestServiceImpl" behaviorConfiguration="webHttp"/> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="webHttp"> 
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
      <serviceMetadata httpGetEnabled="true"/> 
      <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
      <dataContractSerializer maxItemsInObjectGraph="6553600"/> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="web"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
</configuration> 

我应该为了使代码工作取得了哪些变化。
错误:The server did not provide a meaningful reply; this might be caused by a contract mismatch, a premature session shutdown or an internal server error.

请帮助解决问题。

+0

咦? .......... –

+0

请明确你的问题是什么。这甚至不像C++,它看起来更像c#。 –

您在代码中使用错误的WCF绑定。配置XML显示使用WebHttpBinding的WCF服务。重构你的客户创造的代码是这样的:

WebHttpBinding binding = new WebHttpBinding(); 
// The rest of the configuration 

不知道,如果你要设置的属性将是有效的这种结合,但是编译器会知道:)