我需要调试WCF服务,但它需要有一个HTTP上下文.
目前我有一个WCF服务网站的解决方案,当我点击调试启动时,然后启动一个不包含测试表格的html页面.
当项目运行时,我尝试手动启动wcftestclient,然后提供我的服务地址,它找到服务但是当我调用它时,它绕过IIS层(或开发服务器),所以httpContext为null ...
通过IIS上下文调试WCF服务的正确方法是什么?
在WCF中,默认情况下,HttpContext设置为NULL,即使WCF服务托管在IIS中也是如此; 毕竟,WCF 不是 ASP.NET.
如果你确实需要一个HttpContext,你需要通过config单独打开它(web.config如果你在IIS中托管,app.config否则你的自托管应用程序):
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)
并且您需要通过将此属性放在服务类(实现服务协定)上来指定该事实(您的服务允许甚至期望ASP.NET兼容模式):
[AspNetCompatibilityRequirements
(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]
public class MyWCFService : IMyWCFService
{
......
}
Run Code Online (Sandbox Code Playgroud)
RequirementsMode=Allowed只是简单地允许ASP.NET兼容模式,而 RequirementsMode=Required实际需要是没有它的情况下将无法工作.
完成此操作后,您应该HttpContext.Current在将调试器附加到IIS工作进程时获取.
渣