2015-05-01 95 views
0

當應用程序運行時,WCF服務按預期工作。
當從單元測試項目調用完全相同的代碼時,會發生以下錯誤。是否有什麼特別需要Windows 8測試項目來訪問WCF服務?WCF服務超時Windows 8單元測試項目

結果消息:試驗方法 DataServiceTests.MyTest 拋出異常:

System.AggregateException:出現一個或多個錯誤。 ---> System.ServiceModel.EndpointNotFoundException:無法連接到 net.tcp:// localhost: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

因爲這是一個商店應用,它運行在一個沙箱(AppContainer)中,因此某些事情(如WCF)不能從「盒子測試」開始工作。爲了實現這個目標,我必須在單元測試項目的開發機器中添加一個Loopback Exemption。

步驟1 打開Package.appxmanifest文件中調用WCF服務,並導航到包裝標籤單元測試項目。從那裏,請注意包系列名稱。

Package.appxmanifest

步驟2打開Visual Studio命令提示符/開發人員提示,以管理員身份,並粘貼此在CheckNetIsolation LoopbackExempt -a -n=UnitTestProjectPackageFamilyName,與實際的包姓更換的最後一位。

0

因爲你沒有任何共享的相關源的,因此很難全面診斷您的問題。然而...

您確定您的WCF服務實例在您的測試開始運行之前已經啓動,運行並且可以訪問嗎?

錯誤消息是相當描述的是怎麼回事:

無法連接到的net.tcp://本地主機:8111 /爲MyService/DataAccessService

連接嘗試持續的時間跨度00:00:42.0131535。

連接嘗試失敗,因爲連接的方沒有正確一段時間後響應或已建立的連接失敗,因爲連接的主機未能響應127.0.0.1:8111

+0

對您的測試代碼更感興趣。你用什麼來執行你的測試?的xUnit? MSTest的?其他?您的測試代碼可以訪問WCF服務上的HTTP端點(與您當前公開的TCP端口相比)嗎? –

+0

你可以發佈一些你的測試代碼和測試應用配置(如果你正在配置你的WCF客戶端)?您的服務是否使用HTTP或TCP公開其端點? –

+0

您可以選擇配置您的客戶端,根據我們在構建它時演示WCF的Magic8Ball示例:) https://github.com/bitcrazed/Magic8Ball/blob/master/src/Magic8BallApp/app.config。聽起來像你已經寫好你的測試代碼,通過代碼綁定到目標服務 - 這很好,但試圖診斷你的問題沒有代碼可能試圖飛過你的眼睛關閉的飛機;) –