2009-06-11 9 views
1

基本的には、ログインしているユーザーを偽装してWebアプリケーションからネットワーク共有リソースにアクセスしようとしています。私はこの例に従った[http://msdn.microsoft.com/en-us/library/ms998351.aspx#paght000023_impersonatingbyusingwindowsidentity]、ここでは、キャストが失敗したことについてのライターは言及していません。私がそのキャストをしたとき、キャストできないというランタイム例外が発生しました。誰もが以前にこのような問題を経験しましたか?WindowsIdentity winId =(WindowsIdentity)HttpContext.Current.User.Identity;このキャスト作品を作る方法現在は失敗しています

ガイダンスやご意見は高く評価されています。

は、私はあなたはそれが するのは難しいので偽装して何をしようとしてわからない

WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity; 
WindowsImpersonationContext ctx = null; 
try 
{ 
    // Start impersonating 
    ctx = winId.Impersonate(); 
    // Now impersonating 
    // Access resources using the identity of the authenticated user 
} 
// Prevent exceptions from propagating 
catch 
{ 
} 
finally 
{ 
    // Revert impersonation 
    if (ctx != null) 
    ctx.Undo(); 
} 
// Back to running under the default ASP.NET process identity 

答えて

0

はそれを行うために正確にどのようにあなたを伝えるが、あなたのWebアプリでのユーザーオブジェクトが equivelentにあるありがとうSystem.Security.Principal.IPrincipalオブジェクトであり、 WindowsPrincipalオブジェクトではありません。

同様に、User.IdentityはIIdentityであり、WindowsIdenityオブジェクトではありません。

あなたがしようとしていることについてさらに投稿できますか?

+0

お読みください。このいずれかを参照してください。[http://msdn.microsoft.com/en-us/library/ms998351.aspx#paght000023_impersonatingbyusingwindowsidentity]、 – Shiva

+0

キャストは常にi「が理由で失敗します言及した。 –

1

本当にあなたのIdentityには何ですか?多分それは一般的な同一性または他のいくつかのアイデンティティだ - あなたが想定して、それがない、Windowsのアイデンティティ:

string typeOfIdentity = HttpContext.Current.User.Identity.GetType().FullName; 

ここでの結果は何ですか?それはあなたが本当にここで扱っているものに関するより多くの情報を与えるかもしれません。

マルク・

+0

これはかなり明白です。これはFormsIdentityであり、HttpContextからそのことを推測することができます。 – Shiva

関連する問題