运行应用程序时,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();
答案 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 文件,然后导航到打包选项卡。从那里,请注意套餐系列名称。
步骤2 以管理员身份打开Visual Studio命令提示符/开发人员提示,并将其粘贴到CheckNetIsolation LoopbackExempt -a -n=UnitTestProjectPackageFamilyName
中,将最后一位替换为实际的包系列名称。