gpt4 book ai didi

.net - 使用 ServiceHost 在单元测试中托管 WCF 服务

转载 作者:行者123 更新时间:2023-12-02 15:48:14 24 4
gpt4 key购买 nike

我正在尝试编写一些单元测试来测试 WCF 服务的端点,为此,我希望在单元测试本身而不是 IIS 中托管该服务。我找到了this article我已经通读并进行了更改,因此我使用 ServiceHost 托管它,并且我可以看到单元测试正在尝试运行它,但我似乎遇到了一些问题。

当我运行测试时,在打开服务时出现以下错误:

This service requires ASP.NET compatibility and must be hosted in IIS. Either host the service in IIS with ASP.NET compatibility turned on in web.config or set the AspNetCompatibilityRequirementsAttribute.AspNetCompatibilityRequirementsMode property to a value other than Required.

这是由我的服务类上的以下属性设置引起的:

[AspNetCompatibilityRequirements( RequirementsMode = AspNetCompatibilityRequirementsMode.Required )]

然后我尝试将以下内容添加到我的 app.config 中,但似乎没有任何区别:

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>

有什么想法可以解决这个问题吗?

最佳答案

如错误消息所述,ASP.NET 兼容模式要求 WCF 服务托管在 ASP.NET Web 服务器中

如果您希望在本地计算机上针对 WCF 服务运行一些集成测试,您始终可以在 Visual Studio 开发服务器中托管该服务(又名Cassini)。我强烈建议您看看CassiniDev ,一个开源库,允许在进程中运行轻量级 ASP.NET Web 服务器,这对于单元测试场景特别有用。

以下是如何在使用 MSTest 的单元测试中使用 CassiniDev 的示例:

[TestClass]
public class MyServiceTest
{
private CassiniDevServer host;

[TestInitialize]
public void SetUp()
{
var host = new CassiniDevServer();
host.StartServer(@"RelativePathToServiceProjectDir", 8080, "/", "localhost");
}

[TestCleanup]
public void TearDown()
{
host.StopServer();
}
}

相关资源:

关于.net - 使用 ServiceHost 在单元测试中托管 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5789669/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com