0

開発マシンで実行されている TFS 2012 と VS 2012 を使用して、更新された 2008 サーバーを実行しています。このソリューションでは、MSBuild を使用して、サーバー上でテストを展開および実行します。開発ボックスではすべてのテストに合格しますが、ローカルに展開された (IIS でホストされている) WCF サーバーを呼び出さないテストだけが失敗します。すべてのサービス コールの例外は次のとおりです。

>     Test method TestProject.TestClass.TestMethod threw exception: 
>     System.ServiceModel.CommunicationObjectFaultedException: The communication object, System.ServiceModel.Channels.ServiceChannel,
> cannot be used for communication because it is in the Faulted state.
>      
>     Server stack trace: 
>        at System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan
> timeout)
>        at System.ServiceModel.Channels.ServiceChannel.System.IDisposable.Dispose()
>     Exception rethrown at [0
enter code here

NETWORK SERVICE には適切な権限があります。電源が入っています。何かご意見は?

4

1 に答える 1

1

解決しました。最初にセットアップの背景を少し説明します。

問題のサービスは、SQLメンバーシッププロバイダーとサービス証明書を利用したユーザー名認証で構成されています。承認は、ASP.NETロールプロバイダーを使用して行われます。使用されているバインディングは、メッセージセキュリティがオンでユーザー名に設定されているNetTcpBindingです。

問題は次のようになりました。ローカルボックスのMSBuildとMSTestが私のアカウントで実行されました。ここで、承認に使用されたローカルで生成された証明書が、現在のユーザー\信頼できる人に追加されました。これは問題ありません。しかし、MSBuildとMSTestがNETWORK SERVICEで実行されているため、ビルドボックスでは、WCFはハンドシェイクを拒否しました。この問題の解決策は、テスト証明書をLocal Computer \TrustedPeopleストアに追加することでした。

于 2013-02-22T23:49:13.120 に答える