0

ローカルIISサーバーで完全に実行されているasp.net3.5Webアプリケーションを開発していますが、ホストされた(1and1)環境に公開すると多くの問題が発生します。

web.configがロードされると、「System.Security.Policy.PolicyException:必要な権限を取得できません。」例外がスローされます。スタックトレースは、これがCastle.Windsorフレームワークの使用が原因であることを示しています。

[PolicyException:必要な権限を取得できません。]
System.Security.SecurityManager.ResolvePolicy(証拠の証拠、PermissionSet reqdPset、PermissionSet optPset、PermissionSet denyPset、PermissionSet&denied、ブール値のcheckExecutionPermission)+7606231
System.Security.SecurityManager.ResolvePolicy(証拠の証拠、PermissionSet reqdPset、PermissionSet optPset、PermissionSet denyPset、PermissionSet&denied、Int32&securitySpecialFlags、ブール値checkExecutionPermission)+57

[FileLoadException:ファイルまたはアセンブリ'Castle.Windsor、Version = 3.0.0.0、Culture = neutral、PublicKeyToken=407dd0808d44fbdc'またはその依存関係の1つを読み込めませんでした。最小限の許可要求を許可できませんでした。(HRESULTからの例外:0x80131417)]
System.Reflection.Assembly._nLoad(AssemblyName fileName、String codeBase、Evidence assemblySecurity、Assembly locationHint、StackCrawlMark&stackMark、Boolean throwOnFileNotFound、Boolean forIntrospection)+0 System.Reflection.Assembly.nLoad(AssemblyName fileName、 String codeBase、Evidence assemblySecurity、Assembly locationHint、StackCrawlMark&stackMark、Boolean throwOnFileNotFound、Boolean forIntrospection)+43
System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef、Evidence assemblySecurity、StackCrawlMark&stackMark、Boolean forIntrospection)+127
System.Reflection.Assembly.InternalLoad(String assemblyString、Evidence assemblySecurity、StackCrawlMark&stackMark、Boolean forIntrospection)+142System.Reflection.Assembly。 Load(String assemblyString)+28
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName、Boolean starDirective)+46

[ConfigurationErrorsException:ファイルまたはアセンブリ'Castle.Windsor、Version = 3.0.0.0、Culture = neutral、PublicKeyToken=407dd0808d44fbdc'またはその依存関係の1つを読み込めませんでした。最小限の許可要求を許可できませんでした。(HRESULTからの例外:0x80131417)]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName、Boolean starDirective)+613
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory()+203 System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai)
+105 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)+178
System.Web.Compilation.BuildProvidersCompiler..ctor(VirtualPath configPath、Boolean supportLocalization、String outputAssemblyName)+54 System.Web.Compilation.ApplicationBuildProvider.GetGlobalAsaxBuildResult(Boolean isPrecompiledApp)+232
System.Web.Compilation.BuildManager.CompileGlobalAsax()+51
System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()+337

[HttpException(0x80004005):ファイルまたはアセンブリ'Castle.Windsor、Version = 3.0.0.0、Culture = neutral、PublicKeyToken=407dd0808d44fbdc'またはその依存関係の1つを読み込めませんでした。最小限の許可要求を許可できませんでした。(HRESULTからの例外:0x80131417)]
System.Web.Compilation.BuildManager.ReportTopLevelCompilationException()+58 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled()+512 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager、IApplicationHost appHost、 IConfigMapPathFactory configMapPathFactory、HostingEnvironmentParameters hostingParameters)+729

[HttpException(0x80004005):ファイルまたはアセンブリ'Castle.Windsor、Version = 3.0.0.0、Culture = neutral、PublicKeyToken=407dd0808d44fbdc'またはその依存関係の1つを読み込めませんでした。最小限の許可要求を許可できませんでした。(HRESULTからの例外:0x80131417)] System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+8921851
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+85 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr、HttpContext context)+333

ホストされている環境の制限のため、この問題の調査にはかなり制限があります。具体的には、machine.configとIISの構成を確認できません。私が確かに知っている1つの事実は、それが2.0.50727.5456フレームワークで実行されているということです...ホスティング業者のカスタマーサービスは有能でも喜んでもいないので、私は自分でそれをしなければなりません。

原因をより深く調査する方法や、これを簡単に解決する方法についての提案は、本当にありがたいです。

4

1 に答える 1

1

1&1 は、ホストされているすべての asp.net アプリケーションに対して一般的な中程度の信頼レベルを使用していることがわかりました。Castle Windsor は、このようなパーミッション制限のある環境 (たとえば、リフレクションが利用できない環境) では実行できないようです。

幸いなことに、そのような状況で使用できる多くの代替手段があります ( which-ioc-runs-in-medium-trust を参照)。小さな(しかし、私の目的のためには十分に強力な)IoCコンテナである単純なインジェクタを使用しただけで、素晴らしい仕事をして、すべての許可の問題を解決しました。

于 2012-05-05T14:22:08.523 に答える