1

尝试访问剃刀视图时出现 HttpCompileException。错误日志不包含任何信息。相同的部署适用于 NGinx+FastCGI,但不适用于 Apache+mod_mono。

我没有使用 mod_mono 自动配置,因为我(还)没有找到让它工作的方法。

这是我对单声道的“手动”apache2.conf配置:

MonoAutoApplication disabled
AddHandler mono .aspx .ascx .asax .ashx .config .cs .asmx .axd
MonoApplications "/:/var/www/MyAppName"
<Location />
    SetHandler mono
</Location>

这是我在尝试访问剃刀视图时遇到的错误:

System.Web.HttpCompileException: External exception
  at ServiceStack.Razor.Compilation.RazorPageHost.Compile () [0x00000] in <filename unknown>:0 
  at ServiceStack.Razor.Managers.RazorPageResolver.EnsureCompiled (ServiceStack.Razor.Managers.RazorPage page, IHttpResponse response) [0x00000] in <filename unknown>:0 
  at ServiceStack.Razor.Managers.RazorPageResolver.CreateRazorPageInstance (IHttpRequest httpReq, IHttpResponse httpRes, System.Object dto, ServiceStack.Razor.Managers.RazorPage razorPage) [0x00000] in <filename unknown>:0 
  at ServiceStack.Razor.Managers.RazorPageResolver.ResolveAndExecuteRazorPage (IHttpRequest httpReq, IHttpResponse httpRes, System.Object model, ServiceStack.Razor.Managers.RazorPage razorPage) [0x00000] in <filename unknown>:0 
  at ServiceStack.Razor.Managers.RazorPageResolver.ProcessRequest (IHttpRequest httpReq, IHttpResponse httpRes, System.Object dto) [0x00000] in <filename unknown>:0 
  at ServiceStack.WebHost.Endpoints.Formats.HtmlFormat+<>c__DisplayClass1.<SerializeToStream>b__0 (IViewEngine x) [0x00000] in <filename unknown>:0 
  at System.Linq.Enumerable.Any[IViewEngine] (IEnumerable`1 source, System.Func`2 predicate) [0x00000] in <filename unknown>:0 
  at ServiceStack.WebHost.Endpoints.Formats.HtmlFormat.SerializeToStream (IRequestContext requestContext, System.Object response, IHttpResponse httpRes) [0x00000] in <filename unknown>:0 
  at ServiceStack.WebHost.Endpoints.Extensions.HttpResponseExtensions.WriteToResponse (IHttpResponse response, System.Object result, ServiceStack.ServiceHost.ResponseSerializerDelegate defaultAction, IRequestContext serializerCtx, System.Byte[] bodyPrefix, System.Byte[] bodySuffix) [0x00000] in <filename unknown>:0 

我在 ServiceStack 源代码中查看了 RazorPageHost.Compile,我可以看到如果结果_codeDomProvider.CompileAssemblyFromDom包含一些错误,则会抛出 HttpCompileException,这是有道理的。

是否有一些特殊配置可以CodeDomProvider在 mod_mono Apache 托管的 ServiceStack 应用程序上运行?

编辑:看起来这不是特定于 ServiceStack,部署到同一台服务器的其他 ASP.NET 应用程序也有同样的问题。

4

0 回答 0