WCF服务从Windows 8单元测试项目中超时

时间:2015-05-01 19:18:35

标签: wcf unit-testing windows-store-apps windows-8.1

运行应用程序时,WCF服务按预期工作 当从单元测试项目调用完全相同的代码时,会发生以下错误。 Windows 8测试项目是否需要特殊的东西才能访问WCF服务?

  

结果消息:测试方法   DataServiceTests.MyTest   抛出异常:

     

System.AggregateException:发生了一个或多个错误。 --->   System.ServiceModel.EndpointNotFoundException:无法连接   的net.tcp://本地主机:56478 /为MyService / DataAccessService。连接   尝试持续时间为00:00:42.0131535。 TCP错误代码   10060:连接尝试失败,因为连接方没有   在一段时间后正确回应,或建立连接   失败,因为连接的主机无法响应   127.0.0.1:56478。 ---> System.Net.Sockets.SocketException:连接尝试失败,因为连接方未正确   一段时间后回复,或建立连接失败   因为已连接的主机无法响应127.0.0.1:56478

集成测试代码:

DataAccess service = new DataAccess(
    new Uri(@"net.tcp://127.0.0.1:56478/MyServices/DataAccessService"));
var bob = service.GetData();

2 个答案:

答案 0 :(得分:0)

由于您没有共享任何相关来源,因此很难完全诊断您的问题。但是......

在测试开始运行之前,您确定WCF服务实例已启动,运行并可访问吗?

错误消息非常清楚地描述了正在发生的事情:

  

无法连接到net.tcp:// localhost:8111 / MyService / DataAccessService

     

连接尝试持续时间跨度为00:00:42.0131535。

     

连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机无法响应127.0.0.1:8111

答案 1 :(得分:0)

因为这是一个商店应用程序,它在沙箱(AppContainer)中运行,因此某些东西(如WCF)无法通过"单元测试"盒子外面。为了使其工作,我不得不为我的开发机器添加一个Loopback Exemption用于单元测试项目。

第1步 打开调用WCF服务的单元测试项目中的 Package.appxmanifest 文件,然后导航到打包选项卡。从那里,请注意套餐系列名称。

Package.appxmanifest

步骤2 以管理员身份打开Visual Studio命令提示符/开发人员提示,并将其粘贴到CheckNetIsolation LoopbackExempt -a -n=UnitTestProjectPackageFamilyName中,将最后一位替换为实际的包系列名称。