如果设置了 InstanceContextMode = PerSession ,我可以正确使用WCF服务。一旦将其更改为 Single (单个),MEX端点就会旋转直到收到超时异常。在这两种情况下,我都设置为 ConcurrencyMode = Multiple。。我是否需要做一些特殊的事情来为Singleton服务配置我的MEX端点,还是应该注意一些限制?
以下是错误详细信息的副本:
下载'http://localhost:8000/Services/MyService1/mex/ $ metadata'时出错。 请求失败,HTTP状态为400:错误的请求。 元数据包含无法解析的引用:“ http://localhost:8000/Services/MyService1/mex”。 对“ http://localhost:8000/Services/MyService1/mex”的HTTP请求已超过分配的超时时间00:05:00。分配给该操作的时间可能是较长超时的一部分。 该请求被中止:该请求被取消。 如果服务是在当前解决方案中定义的,请尝试构建解决方案并再次添加服务引用。
这是app.config的副本:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="MEX">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="MyService1" behaviorConfiguration="MEX" >
<endpoint address="/MyService1" binding="netNamedPipeBinding" contract="IMyService1">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="/MyService1/mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.pipe://localhost/Services"/>
<add baseAddress="http://localhost:8000/Services/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
</configuration>