题 将ASP.NET MVC4 App部署到GoDaddy Compiler问题


已经看过几篇关于向GoDaddy部署MVC应用的帖子。他们似乎都没有解决我们遇到的问题。我们遵循了有关检查运行时版本,IIS管道模式,发布和将本地复制到true的建议,因此所有这些都适用于GoDaddy.Com。

我们遇到的问题是,当我们尝试访问该站点时,我们会收到组策略异常,因为ASP.NET运行时正在尝试调用C#编译器。

[Win32Exception (0x80004005): This program is blocked by group policy. For more information, contact your system administrator]

[ExternalException (0x80004005): Cannot execute a program. The command being executed was "C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe".........

我们已经完成了发布设置并选择预编译该站点。这没有解决问题。看过网站,没有部署CS文件。该 Global.asax file确实引用了一个codebehind文件。由于我们预编译了网站,我们尝试删除 global.asax 文件,这也不能解决问题。

任何想法都会很棒。


33
2017-07-08 17:39


起源


如果您预先编译了自己的观点,是否还会看到此问题?似乎有一些事情可能导致这种情况:1)编译视图,2)服务器上的JIT编译。对于两者,答案是确保您的应用程序具有csc.exe的权限(反之亦然?)。 - George Stocker♦
在发布设置中,我们选择预编译。我们确实将web.config更改为设置为完全信任(GoDaddy.com文章说,ASP.NET 4.0 / 4.5信任应该设置为完全)。由于这是GoDaddy.Com环境,不知道我们如何授予进一步的权限以允许CSC.EXE运行)。 - Keith Franklin
请确保您已在您的网站上获得完全许可,或者您可以请求Godaddy为您提供许可。另请查看此文档 windows2008hosting.asphostportal.com/post/... 并希望它也会有所帮助!
你有没有找到解决方案? - Jonathan Wood


答案:


几个月来我一直在努力解决同样的问题。最后解决了它。在godaddy的plesk中,我更改了ASP.Net设置。首先将CAS-trustlevel更改为Full。然后我改变了 Web.config 我的项目如下:

  • 将信任级别添加到system.web
  • 删除system.codecom中的编译器
 <system.web>
    compilation debug="true" targetFramework="4.5.2"/>
    <httpRuntime targetFramework="4.5.2"/>
    <trust level="Full"/>             <!-- Just add this to the webconfig -->
 </system.web>

 <system.codedom>
              <!-- All is removed between the 2 tags-->
 </system.codedom>

这解决了我的问题。


95
2018-02-02 13:41



^^这就是答案。设置完全信任,并删除中的所有内容 <system.codedom> 节点。你的答案未经表决。 - Mathieu Guindon
谢谢,我一直在寻找解决方案大约2天 - ozgunb
谢谢!这是我最近遇到的一个问题,我以前没见过。该 trust level="Full" 我之前必须做的部分,但我永远不会想到删除之间的所有内容 system.codedom 标签。 - johnnyRose
难以置信。花了几个小时试图重新修改我的连接字符串后,在里面注释掉那些语言标签 <system.codedom> 为我解决了什么是PITA! - Jonathan Wood
为什么这会起作用? - Ernesto


您必须从Web配置中删除编译信息,它才会起作用。

除了预编译(选中发布设置中的框),还要将以下内容添加到Web.Release.config中:

<system.web>
  <trust level="Full" xdt:Transform="Insert" />
</system.web>
<system.codedom xdt:Transform="Remove" /> <!-- No compiling on server, GoDaddy blocks it. -->

UPDATE (2017年1月27日): 看来(至少在我的帐户上)不再需要删除system.codedom。


17
2017-12-08 16:04



这是一种比手动更改配置的更高评级答案更好的方法。然而,两种方法都解决了这个问 - Michael


我在GoDaddy托管上遇到了同样的问题。

要修复它,请按照以下步骤操作

步骤1:在Web Deploy设置中选择“在发布期间预编译”。

第2步: <trust level="Full" /> 在 <system.web> 在Web.config中


8
2017-07-28 11:14





我删除了Roslyn nuget包,如下面链接中所述,但它是一个工作场所。

https://social.msdn.microsoft.com/Forums/en-US/442b100a-2b88-4ac4-b655-0c1345791f15/roslyn-cscexe-web-api-2-on-hosting-server?forum=msbuild

使用visual studio 2015模板中的干净mvc 5 Web项目会发生此问题。 我联系了godaddy的支持,让我们看看他们做了什么。


5
2017-08-20 23:15



他们对我做的是告诉我“对不起,你的信任级别已经设置为Full,所以猜你需要找另一家托管公司。”我想念WTF吗? - Jonathan Wood
他们说通过电话支持? - utilsit
是。不是那么多的话,但那是有信息的。他们告诉我,如果我需要该帐户不支持的任何权限,那么我需要找到一个具有不同权限的主机帐户。 - Jonathan Wood


优秀。我也有同样的问题。但是,我的托管供应商是arvixe。

  1. 在Web.config中的> system.web>部分下添加> trust level =“Full”/>“
  2. 注释>编译器> Web.config中> codedom>的部分

问题修复!!!


3
2017-09-10 17:33



真主tera bhalla kre pai。 - Zahid Usman Cheema
非常感谢。浪费了2天后,这对我有用。 - Zahid Usman Cheema


发布后csc.exe编译器错误

在web.config上发表评论

<!--<compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.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.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
</compilers>-->

1
2018-04-07 15:53