私は、Windows認証を使用するASP.NET MVC3アプリケーションでコントローラアクションを呼び出すCLRストアドプロシージャで作業しています(それ以外は無効です)。 Webサーバーは、Windows Server 2008 R2 Standardで実行されているIIS 7.5です。データベースサーバーはSQL Server 2008 R2 Enterprise Editionです。ここではCLRのPROCのコードは次のとおりです。SQL CLRストアドプロシージャからMVC3アクションを呼び出す
[SqlProcedure]
public static void UpdateModels()
{
Uri uri = null;
HttpWebRequest rq;
HttpWebResponse rsp;
Uri.TryCreate("http://testserver/RPM/Configuration/UpdateModels", UriKind.Absolute, out uri);
rq = (HttpWebRequest)HttpWebRequest.Create(uri);
rq.Method = WebRequestMethods.Http.Get;
rsp = (HttpWebResponse)rq.GetResponse();
}
私は問題なくSQL Serverにアセンブリを配置することができましたが、私はそれを実行したときに、私は次のエラーを取得する:
Msg 6522, Level 16, State 1, Procedure UpdateModels, Line 0
A .NET Framework error occurred during execution of user-defined routine or aggregate "UpdateModels":
System.Net.WebException: The remote server returned an error: (401) Unauthorized.
System.Net.WebException:
at System.Net.HttpWebRequest.GetResponse()
at StoredProcedures.UpdateModels()
.
これが発生しますSQLエージェントジョブ(私の資格情報の下で実行)からSPを呼び出すとき、SSMSクエリーウィンドウ(再度、私の資格情報)、または私が試したと思っている他の方法からEXECしたとき。私はWebアプリケーションの許可ユーザーであり、そのコントローラーメソッドをアプリケーション自体からうまく呼び出すことができます。
URLを「http:// testserver」に変更すると、正常に動作しますが(何もしません)、URLに「RPM」を追加すると失敗します問題はアプリケーション自体であり、サーバーまたはそのデフォルトサイトではないようです。また、匿名認証を有効にすると動作しますので、何らかの形でWindows資格情報がサイトに渡されません。ログを確認すると、次のことが確認されます。
2012-02-23 12:51:33 10.1.1.1 GET /RPM/Configuration/UpdateModels - 80 - 10.2.2.2- 302 0 0 218
資格情報が渡されていません。私はCLR SPコード内で偽装を試みましたが、それは助けにはなりませんでした。私は確かに確信しているように、私はこのようなものではかなり新しいですし、おそらく何か不本意なことをしています。誰かが正しいコースに私を置くことができたら、私は感謝します!私が恐れていたとして
TIA、
ジェフ