WCF PerSesson InstanceContextMode阻止使用SVCUtil生成代理

时间:2011-08-04 17:01:11

标签: c# wcf datacontractserializer svcutil.exe

我有一个Windows服务托管的WCF Web服务。我一直在使用SVCUTIL生成代理,事情一直很好,但今天我将 InstanceContextMode InstanceContextMode.Single 更改为 InstanceContextMode.PerSession 现在我得到以下错误,我无法隔离。我可以通过更改此设置之外的任何其他内容来可靠地重新创建错误。任何想法???

以下是SVCUTIL的错误消息

  

生成元数据文件... EXEC:错误:出错   导出服务类型:   Host.Services.MyService。

An exception was thrown in a call to a WSDL export extension:
     

System.ServiceModel.Description.DataContractSerializerOperationBehavior   合同:   http://MySoftware/ServiceContracts/2011/02:IMyService

服务界面如下:

[ServiceContract(Namespace = Namespace.Current, SessionMode = SessionMode.Allowed)]
public interface IMyService

服务实施 现在 配置如下:

[ServiceBehavior(Namespace = Namespace.Current, InstanceContextMode = InstanceContextMode.PerSession)]
public class MyService : IMyService

以下是我的数据合同序列化程序配置文件中的当前设置

<dataContractSerializer maxItemsInObjectGraph="1000000" />

1 个答案:

答案 0 :(得分:2)

这似乎与实例上下文模式无关 请尝试以下方法:

  1. 使用HTTP嗅探器(如fiddler)查看返回的WSDL文件。确保没有收到错误页面而不是wsdl文件。
  2. 如果您要获取WSDL文件而不是错误页面,请保存该文件,将服务更改回单个,获取WSDL并比较两个WSDL文件以查找问题。
相关问题