【问题标题】:SecurityException thrown on deployment部署时抛出 SecurityException
【发布时间】:2016-11-12 17:00:09
【问题描述】:

我刚刚编写了一个 MVC 应用程序并让它在我的实验室中运行。现在我已将它部署到 GoDaddy,我收到以下错误。

描述:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请联系您的系统管理员或在配置文件中更改应用程序的信任级别。

异常详细信息:System.Security.SecurityException:请求失败。

源错误:在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[安全异常:请求失败。] System.Security.CodeAccessSecurityEngine.ThrowSecurityException(RuntimeAssembly asm,PermissionSet 被授予,PermissionSet 被拒绝,RuntimeMethodHandleInternal rmh,SecurityAction 操作,对象需求,IPermission permThatFailed)+165 System.Security.CodeAccessSecurityEngine.ThrowSecurityException(对象 assemblyOrString,PermissionSet 被授予,PermissionSet 被拒绝,RuntimeMethodHandleInternal rmh,SecurityAction 操作,对象需求,IPermission permThatFailed)+100 System.Security.CodeAccessSecurityEngine.CheckSetHelper(PermissionSet 授予,PermissionSet 被拒绝,PermissionSet 要求,RuntimeMethodHandleInternal rmh,对象 assemblyOrString,SecurityAction 操作,布尔 throwException)+284 System.Security.CodeAccessSecurityEngine.CheckSetHelper(CompressedStack cs,PermissionSet 授权,PermissionSet 拒绝,PermissionSet 要求,RuntimeMethodHandleInternal rmh,RuntimeAssembly asm,SecurityAction 操作)+70 System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔 throwOnError,布尔 ignoreCase,布尔反射,StackCrawlMarkHandle stackMark,IntPtr pPrivHostBinder,布尔 loadTypeFromPartialName,ObjectHandleOnStack 类型)+0 System.RuntimeTypeHandle.GetTypeByName(字符串名称,布尔 throwOnError,布尔 ignoreCase,布尔反射,StackCrawlMark 和 stackMark,IntPtr pPrivHostBinder,布尔 loadTypeFromPartialName)+70 System.RuntimeType.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark& stackMark) +40 System.Type.GetType(String typeName) +30 System.CodeDom.Compiler.CompilerInfo.get_IsCodeDomProviderTypeValid() +12 System.Web.Compilation.CompilationUtil.GetRecompilationHash(CompilationSection ps) +2175 System.Web.Configuration.CompilationSection.get_RecompilationHash() +96 System.Web.Compilation.BuildManager.CheckTopLevelFilesUpToDateInternal(Int64 cachedHash) +458 System.Web.Compilation.BuildManager.CheckTopLevelFilesUpToDate(Int64 cachedHash) +51 System.Web.Compilation.BuildManager.ExecutePreAppStart() +135 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +531

我想知道我的数据库连接字符串,尽管该错误似乎并不表明数据库有任何问题。

所以我真正的问题是:如何解决这个问题。这些消息似乎根本没有帮助。下一步可能是什么?

【问题讨论】:

  • 你在使用 MVC-5 吗?
  • @StephenMuecke:我刚刚升级到最新版本的 Visual Studio,所以我使用的是最新版本。
  • 我认为那将是 MVC-5。我对 GoDaddy 托管以及它们支持的信任级别一无所知,但这可能与 MVC-5 不再支持中等信任的事实有关(参考 this answer

标签: asp.net .net asp.net-mvc entity-framework connection-string


【解决方案1】:

这似乎是一个问题,因为我用于构建我的应用程序的 .NET 版本与主机上提供的版本不匹配。

感谢 Microsoft 提供的另一条错误消息,它似乎没有告诉我根本问题是什么。

【讨论】:

    【解决方案2】:

    似乎问题出在“信任级别”上。您需要在您的网站的 web.config 中指定您需要的信任级别。但问题是 GoDaddy 可能不允许您的站点所需的信任级别。信任级别之一允许/不允许,例如反射(例如 IoC 容器使用反射或 AutoMapper)。

    信任级别的东西是微软已经声明他们不再支持的东西,因此不再修复任何使其不安全的错误修复等。因此,一种解决方案可能是寻找另一个虚拟主机,但更改 web.config 并不能解决您的问题。

    示例配置:

    <system.web>
      <securityPolicy>
        <trustLevel name="Full" policyFile="internal"/>
      </securityPolicy>
    </system.web>
    

    【讨论】:

    • 查看了更多内容并在 GoDaddy 上找到了这篇文章:en.godaddy.com/help/…
    • 当我进入设置时,它说 CAS 信任级别设置为完全。所以就我的理解而言,这似乎不是问题。
    • 我的错,我之前一直在寻找我自己的原因,并确定这是问题所在。这篇文章说这也可能是由于该站点不在其自己的应用程序池下。那是你可以检查的东西吗? support.microsoft.com/en-us/kb/555466如果还是不行我就帮不上忙了,抱歉。
    猜你喜欢
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多