从 aspx 访问 WCF 会话
是否可以在 Web 应用程序中使用在 WCF 服务上创建的相同会话?有任何示例代码可以做到这一点吗?
Is it possible to use the same session created on WCF service in a web application? any sample code to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
可以通过设置 ASPCompatibityMode 但您永远不应该这样做(访问 WCF 服务内的 ASP.NET 会话)。我建议您让 ASP.NET 应用程序使用此服务来简单地构造一个包含所有必要信息的 POCO 对象并将其发送到服务,以便服务不会与此会话强耦合。访问 WCF 服务内的 ASP.NET 会话会使该服务完全不可重用。如果您想从桌面应用程序调用您的服务怎么办?
It is possible by setting the ASPCompatibityMode but you should never do this (access ASP.NET session inside a WCF service). I would recommend you having the ASP.NET application consuming this service to simply construct a POCO object containing all the necessary information and send it to the service so that the service is not strongly coupled to this session. Accessing an ASP.NET session inside a WCF service makes this service completely non-reusable. What if you wanted to call your service from a desktop application?
WCF 会话存在于完全不同的上下文中 - ASP.NET 和 WCF 之间没有关系(除非您打开 AspNetCompatibility)= ASP.NET 不了解 WCF,而 WCF 也不了解 ASP.NET。因此,如果您想在 ASP.NET 和 WCF 之间共享某些内容,则必须手动使用这两种技术之外的内容。它通常意味着在每个 ASP.NET 和 WCF 请求中传递的一些自定义全局可访问(单例)“会话管理器”和自定义“会话 ID”。
WCF session exists in absolutely different context - there is no relation between ASP.NET and WCF (unless you turn on AspNetCompatibility) = ASP.NET doesn't know about WCF and WCF doesn't know about ASP.NET. So if you want to share something between ASP.NET and WCF you must manually use something outside both of these technologies. It generally means some custom globally accessible (singleton) "session manager" and custom "session id" passed in each ASP.NET and WCF request.