Web.config导致"被组策略阻止"错误

Jon*_*ood 23 c# asp.net asp.net-mvc web-config group-policy

不同web.config设置的miriad 对我来说一直都是一个谜.我很高兴微软默认清理了一些放在那里的内容,但它仍然会造成问题.

具体来说,Visual Studio 2015将以下部分放在标准ASP.NET MVC应用程序的生成的web.config中.

<system.codedom>
  <compilers>
    <compiler language="c#;cs;csharp" extension=".cs"
      type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
      warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
   <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
      type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
      warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
  </compilers>
</system.codedom>
Run Code Online (Sandbox Code Playgroud)

当我将此应用程序上传到我的GoDaddy共享Plesk主机帐户时,我收到以下错误.

该程序被组策略阻止.有关更多信息,请与系统管理员联系.

GoDaddy支持完全不愿意,无法提供任何帮助.但是,我发现如果我注释掉上面的部分,那么错误就会消失.

有谁知道这个块的目的或者为什么微软把它放在那里?没有它我的应用似乎运行正常.(请注意,我的应用程序使用C#而不是VB.)

Pri*_*sad 44

<system.codedom>
   <!--remove all the contents here-->
</system.codedom>
Run Code Online (Sandbox Code Playgroud)

删除system.codedom标记内的所有内容并添加

<trust level="Full"/>
Run Code Online (Sandbox Code Playgroud)

里面的system.web标签

<system.web>
   <trust level="Full"/>
</system.web>
Run Code Online (Sandbox Code Playgroud)

  • 太感谢了。你的解决方案真的很方便! (2认同)

Syn*_*der 12

由于ASP.NET 2可以将您的站点上传到您的主机而无需编译它.然后,将使用web.config中显示的编译器设置在初始请求上编译该站点.如果您预编译您的站点但仍然在该App_code文件夹中有代码,那么这些设置将用于编译该代码.

我认为go-daddy禁止在他们的服务器上进行编译,因此不会以某种方式插入和编译/执行恶意代码.

只要您不使用该App_code文件夹并预编译您的网站,您就可以删除web.config您提到的部分.

有关App_code文件夹检查的更多信息:

有关ASP.NET检查的动态编译的更多信息: