2009-07-17 11 views
1

次のコードは機能しますが、アプリケーションのセキュリティ要求が発生します。アプリケーションでは、多くの場合、SecurityExceptionがスローされることがよくあります。あなたが見ることができるように、コードはこれをうまく処理しますが、私は可能ならばそれをスピードアップしたいと思います。物事を改善する方法に関する提案は非常に高く評価されます!発信者が潜在的に例外をスローすることなく、信頼性が高いかどうかを調べる方法はありますか?

using System.Security; 
using System.Web; 

namespace MyProject 
{ 
    internal static class TrustHelper 
    { 
     public static bool IsHighlyTrusted() 
     { 
      try 
      { 
       AspNetHostingPermission permission = 
        new AspNetHostingPermission(
         AspNetHostingPermissionLevel.High); 

       permission.Demand(); 

       return true; 
      } 
      catch (SecurityException) 
      { 
       return false; 
      } 
     } 
    } 
} 

答えて

1

はダウン投票SecurityManager ...

var perm = new AspNetHostingPermission(AspNetHostingPermissionLevel.High); 
var hasPerm = System.Security.SecurityManager.IsGranted(perm); 
+0

いかなる理由を使用しますか? –

1

スタティックイニシャライザで値を1回計算して結果を保存するだけではどうですか?

.NETのセキュリティ「証拠」は、アセンブリが読み込まれたときに収集され、アクセス許可を判断するために使用されます。したがって、アクセス許可はアセンブリの有効期間中は変更されず、起動時に決定されます。

internal static class TrustHelper 
{ 
    static TrustHelper() 
    { 
     try 
     { 
      var permission = new AspNetHostingPermission(
       AspNetHostingPermissionLevel.High); 
      permission.Demand(); 

      TrustHelper.IsHighlyTrusted = true; 
     } 
     catch (SecurityException) 
     { 
      TrustHelper.IsHighlyTrusted = false; 
     } 
    } 

    public static bool IsHighlyTrusted() 
    { 
     get; 
     private set; 
    } 
} 
関連する問題