1

基本的に、ログインしているユーザーになりすまして、Web アプリケーションからネットワーク共有リソースにアクセスしようとしています。私はこの例 [ http://msdn.microsoft.com/en-us/library/ms998351.aspx#paght000023_impersonatingbyusingwindowsidentity]に従いました。ここでは、ライターはキャストの失敗について言及していません。そのキャストを行ったとき、キャストを行うことができないというランタイム例外が発生しました。誰もこの種の問題を経験したことがありますか?

ガイダンスや提案は大歓迎です!

ありがとうございました

  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
4

2 に答える 2

1

あなたの本当は何Identityですか?? おそらく、それは一般的なIDまたはその他のIDである可能性があります-あなたが想定しているWindows IDではありません:

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

ここでの結果は何ですか?これにより、ここで実際に何を扱っているかについて、より多くの情報が得られる場合があります。

マルク

于 2009-06-11T20:35:01.147 に答える
0

偽装で何をしようとしているのかわからないので、その方法を正確に伝えるのは難しいですが、Web アプリの User オブジェクトは System.Security.Principal.IPrincipal オブジェクトと同等であり、WindowsPrincipal オブジェクトではありません。

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

あなたがやろうとしていることについてもっと投稿できますか?

于 2009-06-11T20:33:07.830 に答える