【发布时间】:2011-04-26 11:31:52
【问题描述】:
我正在尝试编写一些单元测试来测试我的 WCF 服务的端点,为此我想在单元测试本身而不是在 IIS 中托管服务。我发现this article 已通读并进行了更改,因此我使用ServiceHost 托管它,我可以看到单元测试正在尝试运行它,但我似乎遇到了一些问题。
当我运行测试时,我在打开服务时收到以下错误:
此服务需要 ASP.NET 兼容性,必须托管在 IIS。在 IIS 中托管服务 打开 ASP.NET 兼容性 在 web.config 或设置 AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode 属性的值不是 必填。
这是由我的服务类的以下属性设置引起的:
[AspNetCompatibilityRequirements( RequirementsMode = AspNetCompatibilityRequirementsMode.Required )]
然后我尝试将以下内容添加到我的 app.config 中,但似乎没有任何区别:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
有什么办法可以解决这个问题吗?
【问题讨论】:
-
这很容易解决:只需删除 ASP.NET 兼容性要求。不,说真的:你应该这样做。
-
最后我做到了,只是删除了属性。我担心我一开始并不知道它存在的确切原因,但我想这就是我们进行单元测试、CI 和夜间构建的原因!!! :)
-
当你开始错过
HttpContext时,你需要它回来;)当然,自托管会消失!
标签: .net asp.net wcf unit-testing mstest