【发布时间】:2011-03-08 16:54:39
【问题描述】:
我试图在 wsHttpBinding 端点公开 WCF 服务,它给了我以下错误消息:
Contract 需要 Session,但是 Binding '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>
【问题讨论】:
-
@marc_s,我什至无法使用指向 .svc 文件的浏览器在本地访问该服务。
-
检查我的答案 - 我认为您的配置和服务合同文件不匹配....
-
您的示例显示 IOrderService 合同,您的配置使用 IPricingDataService 合同。 IOrderService 在哪里使用?
-
@Ladislav,谢谢。我刚刚纠正了这个错误,但我仍然收到相同的错误消息。