私は中程度の信頼環境でホストされているASP MVCアプリケーションを持っています。つまり、実行できるコードは、アプリケーションの信頼ファイルのコードパーミッションで定義されているコードだけです。新しいMVCアプリケーションでは、メソッドExecutePreAppStart()
が呼び出されています。このメソッドは、LoadAllAssembliesFromAppDomainBinDirectory()
を実行しようとします。これが発生するとアプリがそのアセンブリを実行するための明示的な許可を付与されていない場合は権限エラーがPreApplicationStartMethodで生成された例外をキャッチするにはどうすればよいですか?
[PolicyException: Execution permission cannot be acquired.]
が生成されます。これは期待される結果です。
ここでの問題は、PreApplicationStartMethodの実装に先立って、このエラーがglobal.asaxのApplication_Error
までバブルすることです。 PreApplicationStartMethodでは、これはもはやケースではありません。 PreApplicationStartMethodは私が制御するコードに含まれていないので、発生する可能性があるエラーをトラップするにはどうすればよいですか?
例外をキャッチするために私自身のPreApplicationStartMethodを作成しようとしましたが、アプリケーションが完全にロードされないため、ブレークポイントに達しませんでした。
他の人のPreApplicationStartMethodのエラーを捕まえる方法はありますか?私の最終目標は例外を公開することだけです。エラーをキャッチで
試み:
[assembly: System.Web.PreApplicationStartMethod(typeof(mynamespace.Initializer), "Initialize")]
namespace mynamespace
{
public static class Initializer
{
public static void Initialize()
{
//Do something here to catch errors/bind event? but I never get this far at runtime
}
}
}
スタックトレース:
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +772
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +259 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +163
System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +230
System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +76 System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +343
System.Web.Compilation.BuildManager.ExecutePreAppStart() +176
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +734