Web.config 导致 "blocked by group policy" 错误
Web.config causing "blocked by group policy" error
无数种不同的web.config设置对我来说一直有点神秘。我很高兴 Microsoft 清理了一些默认放置在那里的内容,但它仍然会导致问题。
具体来说,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=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
当我将此应用程序上传到我的 GoDaddy 共享 Plesk 托管帐户时,出现以下错误。
This program is blocked by group policy. For more information, contact your system administrator.
GoDaddy 支持完全不愿意也无法提供任何帮助。但是,我发现如果我注释掉上面的部分,错误就会消失。
有谁知道这个块的用途或者微软为什么把它放在那里?如果没有它,我的应用程序似乎 运行 还可以。
因为 ASP.NET 2 是否可以在不编译的情况下将您的网站上传到您的主机。然后站点将根据 web.config 中所见的编译器设置根据初始请求进行编译。如果您预编译了您的网站,但 App_code
文件夹中仍有代码,这些设置将用于编译该代码。
我认为 go-daddy 在他们的服务器上禁用了编译,因此无法以某种方式插入恶意代码 compiled/executed。
只要您不使用 App_code
文件夹并且预编译您的网站,就可以删除您提到的 web.config
部分。
有关 App_code
文件夹检查的更多信息:
- https://msdn.microsoft.com/en-us/library/ex526337.aspx
- https://msdn.microsoft.com/en-us/library/t990ks23.aspx
有关ASP.NET动态编译的更多信息请查看:
我意识到这有点晚了,但我通过删除元素中的所有内容解决了这个问题。这似乎适用于预编译和其他方式。
<system.codedom>
<!--remove all the contents here-->
</system.codedom>
删除system.codedom
标签内的所有内容并添加
<trust level="Full"/>
在 system.web
标签内
<system.web>
<trust level="Full"/>
</system.web>
在您的服务器上更改 Asp.net 设置。有一个信任级别选项。将其设置为 "Full".
无数种不同的web.config设置对我来说一直有点神秘。我很高兴 Microsoft 清理了一些默认放置在那里的内容,但它仍然会导致问题。
具体来说,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=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
当我将此应用程序上传到我的 GoDaddy 共享 Plesk 托管帐户时,出现以下错误。
This program is blocked by group policy. For more information, contact your system administrator.
GoDaddy 支持完全不愿意也无法提供任何帮助。但是,我发现如果我注释掉上面的部分,错误就会消失。
有谁知道这个块的用途或者微软为什么把它放在那里?如果没有它,我的应用程序似乎 运行 还可以。
因为 ASP.NET 2 是否可以在不编译的情况下将您的网站上传到您的主机。然后站点将根据 web.config 中所见的编译器设置根据初始请求进行编译。如果您预编译了您的网站,但 App_code
文件夹中仍有代码,这些设置将用于编译该代码。
我认为 go-daddy 在他们的服务器上禁用了编译,因此无法以某种方式插入恶意代码 compiled/executed。
只要您不使用 App_code
文件夹并且预编译您的网站,就可以删除您提到的 web.config
部分。
有关 App_code
文件夹检查的更多信息:
- https://msdn.microsoft.com/en-us/library/ex526337.aspx
- https://msdn.microsoft.com/en-us/library/t990ks23.aspx
有关ASP.NET动态编译的更多信息请查看:
我意识到这有点晚了,但我通过删除元素中的所有内容解决了这个问题。这似乎适用于预编译和其他方式。
<system.codedom>
<!--remove all the contents here-->
</system.codedom>
删除system.codedom
标签内的所有内容并添加
<trust level="Full"/>
在 system.web
标签内
<system.web>
<trust level="Full"/>
</system.web>
在您的服务器上更改 Asp.net 设置。有一个信任级别选项。将其设置为 "Full".