2012-02-23 16 views
1

私は、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、

ジェフ

答えて

0

はまあ、私は愚かな何かをしていました。

​​

GetResponseメソッドを呼び出す前に:偽装答えだったが、私は単純に偽装レベルを設定するために必要な判明。その後、私が当初想定していたのと同じように、提供された資格情報がMVC3コントローラに渡されました。

私はこれを投稿したいと思います。他の誰かが私のやり方と闘う場合に備えて、私はこれを投稿します。

Jeff

関連する問題