получение сообщения об ошибке, связанного с basicHttpBinding, хотя я использую wsHttpBinding - PullRequest
0 голосов
/ 08 марта 2011

Я пытаюсь предоставить службу WCF в конечной точке wsHttpBinding, и она выдает мне следующее сообщение об ошибке:

Контракт требует сессии, но обязательна BasicHttpBinding не поддерживает его или неправильно настроен на поддержать его.

Вот интерфейс:

[ServiceContract(Namespace="http://server.com/orderservices/",SessionMode=SessionMode.Required)]
public interface IOrderService
{
    [OperationContract(IsInitiating=true,IsTerminating=false)]
    string GetOrderNumber();

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

Вот мой файл web.config (служба размещена в 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>

Ответы [ 2 ]

2 голосов
/ 08 марта 2011

Хммм .... проверьте ваш контракт на обслуживание - это IOrderService

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

, но в вашей конфигурации вы настраиваете конечную точку для eMidWare.IPricingDataService

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

Поэтому, я полагаю, .NET / WCF 4 сработает в конечной точке по умолчанию, которая по умолчанию равна basicHttpBinding для схемы http:// ....

0 голосов
/ 08 марта 2011

Если бы вы опубликовали свой сервисный интерфейс, я мог бы сказать с уверенностью, но я полагаю, что у вас есть что-то подобное в вашем сервисном интерфейсе:

 [ServiceContract(SessionMode = SessionMode.Required)]

Это потребует сеанса, а BasicHttpBinding не поддерживает его,Вам нужно использовать wsHttpBinding, если вам нужны сеансы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...