同じ web.config に ASP.NET サイトと WCF サービスを含む WebService があります。これまでは、設定することで WCF サービスで ASP.NET の偽装を使用できました。
<system.web>
<compilation targetFramework="4.0" debug="false"/>
<!-- switch custom errors of-->
<identity impersonate="true"/>
<customErrors mode="Off"/>
</system.web>
ただし、現在(他の理由で-> ASP.NET部分のCookielessセッション状態)、設定する必要があります
aspNetCompatibilityEnabled="true"
オプションを false にします。これにより、WCF サービスに対する ASP.NET の偽装がなくなります。私の WCF サービスの 1 つは、サーバーでの IO 操作に偽装を必要とします... WCF サービス構成で直接定義することにより、以前と同じ偽装を取得する方法を知りたいです。
私が(失敗して)試したことは、設定することです
[OperationBehavior(Impersonation = ImpersonationOption.Required)]
WCF サービスでのメソッドの実装について、次に指定する
<endpoint address="" binding="wsHttpBinding" contract="IService">
<identity>
<servicePrincipalName value="HOST/YourMachineName" />
<dns value="" />
</identity>
</endpoint>
http://msdn.microsoft.com/en-us/library/ff650591.aspxで説明されているように、web.config (明らかに私のサービスの正しい値) で。
ただし、この後 WCF サービスを呼び出すことはできません... WsHttpBinding がコントラクトの ID を提供していないことがわかります。
私は何か重要なものを見逃していますか?
編集:エラーメッセージの翻訳:
: コントラクト操作 '{0}' には、自動偽装のための Windows ID が必要です。呼び出し元を表す Windows ID は、コントラクト ('{3}','{4}') のバインディング ('{1}','{2}') によって提供されません。
(元のエラー メッセージはドイツ語でした...)