开发者

getting error message related to basicHttpBinding even though I'm using wsHttpBinding

开发者 https://www.devze.com 2023-02-15 08:44 出处:网络
I am trying to expose a WCF service at a wsHttpBinding endpoint and it gives me the following error message :

I am trying to expose a WCF service at a wsHttpBinding endpoint and it gives me the following error message :

Contract requires Session, but Binding 'BasicHttpBinding' doesn't support it or isn't configured properly to support it.

Here is the interface :

[ServiceContract(Namespace="http://server.com/orderservices/",SessionMode=SessionMode.Required)]
public interface IOrderService
{
    [OperationContract(IsInitiating=true,IsTerminating=f开发者_如何转开发alse)]
    string GetOrderNumber();

    [OperationContract(IsInitiating = false, IsTerminating = true)]
    void CreateOrder(string orderXML);
}

Here is my web.config file (the service is hosted in IIS 7 ) :

<system.serviceModel>
   <bindings>
      <wsHttpBinding>
         <binding name="longTimeoutBinding" 
             receiveTimeout="00:10:00" sendTimeout="00:10:00">
         </binding>
      </wsHttpBinding>
   </bindings>
   <services>
      <service name="eMidWare.OrderService">
         <host>
            <baseAddresses>
                <add baseAddress = "http://localhost/" />
            </baseAddresses>
         </host>
         <!-- Service Endpoints -->
         <endpoint 
            address="" 
            binding="wsHttpBinding" bindingConfiguration="longTimeoutBinding"
            contract="eMidWare.IPricingDataService">
         </endpoint>
         <endpoint 
             address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
   </services>
   <behaviors>
      <serviceBehaviors>
         <behavior>
            <serviceDebug includeExceptionDetailInFaults="True" />
         </behavior>
      </serviceBehaviors>
   </behaviors>
</system.serviceModel>


Hmmm.... check your service contract - it's a IOrderService

[ServiceContract(Namespace="http://server.com/orderservices/",SessionMode=SessionMode.Required)]
public interface IOrderService
{
}

but in your config, you're setting up an endpoint for eMidWare.IPricingDataService

<endpoint 
    address="" 
    binding="wsHttpBinding" bindingConfiguration="longTimeoutBinding"
    contract="eMidWare.IPricingDataService">

Therefore, I believe, .NET / WCF 4 will kick in a default endpoint, which is of basicHttpBinding for the http:// scheme by default....


If you had posted your service interface I could have said with certainty but I believe you have something like this on your service interface:

 [ServiceContract(SessionMode = SessionMode.Required)]

This would require session and BasicHttpBinding does not support it. You need to use wsHttpBinding if you need to have sessions.

0

精彩评论

暂无评论...
验证码 换一张
取 消