2011-08-15 8 views
0

Ok。私は、WCFプログラムにアクセスするMVC2アプリケーションを持っていて、その情報を使ってそのモデルを作成します。私はこれを達成するために必要なすべてのことを確信していますか?クライアントアプリケーション(MVC2アプリケーション)とサーバーアプリケーション(WCFサービス)に偽装コードがあります。私のIIS 7セットアップ(Windowsサーバー2008)では、匿名認証を無効にし、ASP.net偽装を有効にし、Windows認証を有効にしました。プロセスモデルプールのIDをApplicationPoolIdentityに設定しました。私はおそらくそれを行うべきだと思った。しかし、私はユーザーIDが通過していないことを私に知らせるエラーを受けています。私は、その種のアプリケーションを動作させるためには何が必要なのかを知りたいと思いますか?あなたのMVCアプリケーションのためのWindows認証に必要なものMVC WebサイトとWCFを通す

答えて

2

は、Webの設定を使用すると、既定のWebサイトを使用して、あなたのを持っている場合は、次の

<authentication mode="Windows" /> 
    <authorization> 
    <deny users="?" /> 
</authorization> 

はまた、そう、たとえば、IISは、Webサイトの各ツリーノード上の認証オプションを持っていることに注意して含まれていることを確認しこのノードの下にあるアプリでは、サイトの最上位ノードとノードの認証オプションが異なる場合があります。私のサイトでは、既定のWebサイトノードですべての認証方法を無効にしてから、アプリケーションレベルのノードでのみWindows認証を使用します。すべてのノードで匿名がオフになっていることを確認するか、httpcontext.current.userオブジェクトがnullになり、私たちのアプリがクラッシュする原因となります。

認証モードの切り替えは継承されるため、誤って子ノードの設定を変更する可能性があるため、親ノードを調整するときは注意が必要です。

+0

バインディングのいずれかの認証設定であるべきかどうかは、別の認証設定です。私の無知を許して、私はこれで少し新しい... :-)ああ、あなたはMVCアプリとサービスを言った。私は私のサービスでそれを持っていないので、私はあなたが意味したことを望んでいたと思うが、それは私のMVCアプリケーションにあります。 – SoftwareSavant

+0

はい申し訳ありませんが、私はそれをあまり明確には明記していませんでした。上記の設定は、MVCアプリケーションのルートディレクトリにあるweb.configファイルに格納されます。私たちが知る必要があるのは、最初のページのフォームロードに行き、HttpContext.Current.Userをチェックしてこのオブジェクトがnullかどうかを確認することです。そうであれば、あなたはmvcアプリが認証されていません。サービス関連の場合は、そのサービスでクライアントを偽装する必要があります。ここでこれを行う方法については、かなり良いドキュメントがあります http://msdn.microsoft.com/en-us/library/ms731090.aspx –

+0

このアドバイスに従って、テストサーバーでこの問題を解決できたと思います。 – SoftwareSavant

関連する問題