[解决] 请求“System.Web.AspNetHostingPermission...”权限失败的问题
作者:admin 时间:2022-8-24 11:15:18 浏览:新搭建的ASP.NET网站,运行后出现安全性异常。
安全性异常
说明: 应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请与系统管理员联系,或在配置文件中更改该应用程序的信任级别。
异常详细信息: System.Security.SecurityException: 请求“System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[SecurityException: 请求“System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败。]
System.Reflection.Assembly._GetType(String name, Boolean throwOnError, Boolean ignoreCase) +0
System.Reflection.Assembly.GetType(String name, Boolean throwOnError) +36
System.Web.Compilation.BuildResultCompiledType.GetPreservedAttributes(PreservationFileReader pfr) +54
System.Web.Compilation.PreservationFileReader.ReadFileInternal(VirtualPath virtualPath, String preservationFile, Int64 hashCode) +496
System.Web.Compilation.PreservationFileReader.ReadBuildResultFromFile(VirtualPath virtualPath, String preservationFile, Int64 hashCode) +91
System.Web.Compilation.DiskBuildResultCache.GetBuildResult(String cacheKey, VirtualPath virtualPath, Int64 hashCode) +66
System.Web.Compilation.BuildManager.GetBuildResultFromCacheInternal(String cacheKey, Boolean keyFromVPP, VirtualPath virtualPath, Int64 hashCode) +176
System.Web.Compilation.BuildManager.GetVPathBuildResultFromCacheInternal(VirtualPath virtualPath) +43
System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +59
System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile) +101
System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean noAssert) +126
System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp, Boolean noAssert) +62
System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath) +33
System.Web.UI.PageHandlerFactory.GetHandler(HttpContext context, String requestType, String virtualPath, String path) +37
System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +307
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
版本信息: Microsoft .NET Framework 版本:2.0.50727.8000; ASP.NET 版本:2.0.50727.8001
解决方法:
在IIS中找到网站对应的应用程序池---高级设置---加载用户配置文件 选True 保存 重启IIS。
加载用户配置文件 选True
这样网站就能正常访问了。
其他解决方法?
在微软msdn社区,有人用其他方法解决了这个问题,但是不知为何原因。
User48307553 发表
我已经为此奋斗了好几个小时,一个简单的目录更改就解决了它。
知识扩展
请求 System.Web.AspNetHostingPermission 类型的权限
在 IIS7 中托管 ASP.NET 应用程序时,遇到了“System.Web.AspNetHostingPermission ”类型的权限问题(“/”应用程序中的服务器错误)。
如果我们把“加载用户配置文件”设置为True ,在应用程序池中加载会发生什么情况?Windows 加密服务提供程序试图在用户存储中存储或加载你的证书的密钥,并且由于配置文件不可用,因此加密上下文不可用。请注意,加载用户配置文件设置仅适用于用户帐户。
加载用户配置文件时,这包括他们的加密存储、环境变量(如%TEMP%)和其他变量。它最终归结为在AppPool启动时由 IIS 调用用户配置文件。
要了解有关应用程序池“加载用户配置文件”属性的更多信息,请查看此链接 http://www.iis.net/learn/manage/configuring-security/application-pool-identities。
希望它会有所帮助。
- 站长推荐