【问题标题】:ASP.Net MVC 2 on nginx/mono 2.8nginx/mono 2.8 上的 ASP.Net MVC 2
【发布时间】:2013-11-13 13:22:10
【问题描述】:

我正在尝试在 Linux 环境中设置 ASP.Net MVC 2 应用程序。我在 VirtualBox 上安装了 Ubuntu 10.10,然后从源代码安装了 Mono 2.8。之后我安装了 nginx 并按照推荐的here 配置它。 不幸的是,FastCGI 向我显示标准错误 500 页面:

No Application Found
Unable to find a matching application for request:
Host localhost:80
Port 80
Request Path /Default.aspx
Physical Path /var/www/mvc/Default.aspx

我的应用程序位于 /var/www/mvc 目录中。我试图创建一些存根 Default.aspx 文件并将其放在我的应用程序的根目录中,但它没有帮助,发生了同样的错误。 谢谢。

【问题讨论】:

  • 你使用的是什么版本的 fastcgi mono server?
  • 您是否真的解决了这个问题?我现在在一年多前出现错误 500 页面的地方 - 你设法解决了吗?我尝试在我的站点目录中转储一个简单的 index.aspx 页面,但仍然收到错误 500。

标签: asp.net-mvc-2 mono nginx


【解决方案1】:

我也一直在对此进行一些测试,使用所有 ubuntu10.10 二进制文件。 据我所知,要么 nginx 无法传递单声道服务器的主机名,要么无法通过 fastcgi 协议接收它。总之,教程行:

 fastcgi-mono-server2 /applications=www.domain1.xyz:/:/var/www/www.domain1.xyz/ /socket=tcp:127.0.0.1:9000

不起作用。删除主机名使事情起作用:

 fastcgi-mono-server2 /applications=/:/var/www/www.domain1.xyz/ /socket=tcp:127.0.0.1:9000

但这当然会阻止使用多个虚拟单声道主机。

【讨论】:

  • mvc 不适用于 fastcgi-mono-server2,你需要 fastcgi-mono-server4
【解决方案2】:

由于您正在运行 ASP.NET MVC 2 应用程序,您应该使用 fastcgi-mono-server4。

【讨论】:

  • 感谢提示,但没有帮助。
  • 您是否有标准的 MVC 2 项目,在您的 Web 应用程序的根目录中没有 Default.aspx?
  • 是的,简单的标准 MVC 2 模板应用程序。
  • 当您使用带有 fastcgi-mono-server2 的 MVC 2 时,您应该在其代码隐藏文件中包含 Default.aspx。但是我宁愿尝试使用 apache 和 mod_mono,因为 mono fastcgi 服务器存在一些性能/稳定性问题。
  • 错误 500 表示网关错误。这意味着要么它找不到 Default.aspx,要么你的虚拟主机。域名前可能需要加上www,如果用www调用,实际上需要提供两个条目,一个带www,一个不带www。在单声道 2.10.2 上对我来说效果很好。
【解决方案3】:

在 /etc/nginx/fastcgi_param 中添加以下行为我解决了这个问题。它还允许使用多个虚拟主机。

fastcgi_param HTTP_HOST $host;

【讨论】:

    【解决方案4】:

    您的应用程序是否可以使用 xsp(如果您使用的是 .net 4.0,则为 xsp4)?在尝试配置与其他 Web 服务器的连接之前,您需要确保它正常工作。

    nginx 知道在哪里可以找到单声道吗?您很可能有一个并行安装,它不会在默认路径中。

    我使用 apache,但您可能仍然会发现我博客上的一些说明很有用: http://tqcblog.com/2010/04/02/ubuntu-subversion-teamcity-mono-2-6-and-asp-net-mvc/

    【讨论】:

    • 是的,它有效。实际上 nginx 不需要知道任何关于 mono 的知识,因为它适用于任何标准的 FastCGI 服务器实现(例如使用 fastcgi-mono-server4)。无论如何,感谢您的链接,也许 Apache 解决方案将适用于我。
    【解决方案5】:

    我刚才也遇到了这个问题,我也一直在关注mono网站上的文档:

    我试图按照它的建议启动 fastcgi-mono-server:

    sudo fastcgi-mono-server4 /applications=www.domain1.xyz:/:/var/www/www.domain1.xyz/ /socket=tcp:127.0.0.1:9000 &
    

    但是当我这样做时,我遇到了和你一样的问题。我把它改成了这样:

    sudo fastcgi-mono-server4 /applications=/:/var/www/www.domain1.xyz/ /socket=tcp:127.0.0.1:9000 &
    

    它起作用了(我必须输入 www.domain1.xyz/Home/Index 才能看到我的 MVC 页面,但还没有弄清楚如何阻止它寻找 www.domain1.xyz/default.aspx XD)。

    【讨论】:

      【解决方案6】:

      您需要确保站点配置中设置的域与传递给 fastcgi 服务器的域匹配。例如,如果您的默认站点 (/etc/nginx/sites-enabled/default) 具有以下配置:

      server {
          ...
          server_name www.domain1.xyz;
          ...
      }
      

      您需要将该域传递到 fastcgi 服务器:

      sudo fastcgi-mono-server4 /applications=www.domain1.xyz:/:/var/www/www.domain1.xyz/ ...
      

      那么当您访问该站点时,它显然需要使用您设置的域。

      【讨论】:

        猜你喜欢
        • 2010-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多