不同 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=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
当我将此应用程序上传到我的GoDaddy共享Plesk主机帐户时,我收到以下错误。
此程序被组策略阻止。有关详细信息,请与系统管理员联系。
GoDaddy支持完全不愿意,无法提供任何帮助。但是,我发现如果我注释掉上面的部分,那么错误就会消失。
是否有人知道此阻止的目的或微软将其置于何处?没有它我的应用似乎运行正常。 (请注意,我的应用程序使用C#而不是VB。)
答案 0 :(得分:41)
<system.codedom>
<!--remove all the contents here-->
</system.codedom>
删除system.codedom
标记内的所有内容并添加
<trust level="Full"/>
在system.web
标记内
<system.web>
<trust level="Full"/>
</system.web>
答案 1 :(得分:12)
由于ASP.NET 2可以将您的站点上传到您的主机而无需编译它。然后,将使用web.config中显示的编译器设置在初始请求上编译该站点。如果您预先编译了您的站点,但仍然在App_code
文件夹中有代码,那么这些设置将用于编译该代码。
我认为go-daddy禁止在他们的服务器上进行编译,因此不会以某种方式插入和编译/执行恶意代码。
只要您不使用App_code
文件夹并预编译您的网站,就可以删除您提到的web.config
部分。
有关App_code
文件夹检查的详细信息:
有关ASP.NET动态编译的更多信息,请检查:
答案 2 :(得分:1)
我意识到这有点晚了但我通过删除元素中的所有内容解决了这个问题。这似乎适用于预编译和其他方面。
答案 3 :(得分:0)
在您的服务器上更改Asp.net设置。 Trust Level有一个选项。将其设置为&#34; Full&#34;。