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

发布于 2024-11-27 17:25:11 字数 1142 浏览 1 评论 0原文

我有一个 Windows 服务托管 WCF Web 服务。我一直在使用 SVCUTIL 生成代理,一切都工作正常,但今天我将 InstanceContextModeInstanceContextMode.Single 更改为 InstanceContextMode.PerSession现在我收到以下无法隔离的错误。我可以通过更改此设置以外的任何内容来可靠地重新创建错误。有什么想法吗???

这是来自 SVCUTIL 的错误消息

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

调用 WSDL 导出扩展时引发异常:

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" />

I have a Windows Service hosted WCF Web Service. I've been generating proxies using SVCUTIL and things have been working fine, but today I changed the InstanceContextMode from InstanceContextMode.Single to InstanceContextMode.PerSession and now I get the below error which I can't isolate. I can reliably recreate the error by changing nothing other then this one setting. Any ideas???

Here is the Error Message from SVCUTIL

Generating metadata files... EXEC : error : There was an error
exporting the service type:
Host.Services.MyService.

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

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

The service interface is as follows:

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

The service implementation is now configured as follows:

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

Here is the current setting in my config file for the data contract serializer

<dataContractSerializer maxItemsInObjectGraph="1000000" />

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

左岸枫 2024-12-04 17:25:11

这似乎与实例上下文模式无关。
请尝试以下操作:

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

This doesn't seem to be related to the instance context mode.
Try the following:

  1. Use an HTTP sniffer, such as fiddler, to see the returned WSDL file. Make sure you are not getting an error page instead of the wsdl file.
  2. If you are getting a WSDL file and not an error page, save that file, change the service back to single, get the WSDL and compare the two WSDL files to find the problem.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文