【问题标题】:ServiceStack with mono on linux在 Linux 上使用单声道的 ServiceStack
【发布时间】:2013-04-26 19:12:22
【问题描述】:

我对 linux 或 mono 一无所知。我有在 WebMatrix 中构建的网络应用程序。我已经使用 ServiceStack 和一个 cshtml 测试页面设置了简单的服务。一切在 Windows 上运行良好,但是当我将文件移动到 linux 框时,我的页面可以工作,但是对 ServiceStack 服务的 RESTful 调用会返回 404 未找到。我在这里缺少什么吗? linux 上的 mono 读取 web.config 和 global.asax 一样吗?

谢谢

【问题讨论】:

  • 与其将文件移动到 linux 机器上,不如将文件移动到 linux 机器上 :)
  • 这很有趣,我完全同意你的看法。然而,我的朋友在他的服务器上有一个位置供我使用。
  • 更新:所以我所做的就是从 global.asax 中取出 ServiceStack 代码并删除该文件。我将代码放入_AppStart.cshtml。再次,它在 Windows 上运行良好,但在移到 Linux 机器上时就不行了。想法?
  • 伙计,我希望我能帮助你,但我很久以前就放弃了 Linux。你总是可以研究 Linux 并得到大约 80 种不同的答案,但是,它们中的每一个都是错误的。也就是说,简而言之,尝试学习如何在任何 Linux 发行版中做任何事情是什么感觉。这是一个等式:(Linux + (∞ * [attempts]) = (Epic + Fail)^∞)
  • 我会,但是 +1 你的帖子,因为这是一个很好的问题,很明显

标签: c# linux mono servicestack webmatrix


【解决方案1】:

是的,它们读起来是一样的。
但是...
Linux 使用区分大小写的文件系统。
所以如果你输入:
http://localhost.com/whatever.aspx
并且您的网站实际上被称为whatever.aspx,那么它就会工作。

但是,如果您键入 What.aspx,则会得到 404。

另外,如果您网站的代码隐藏称为 Master.cs(带有 class Master),并且您在带有 master.cs 的 aspx 文件中引用它(例如默认的 Visual Studio Web 应用程序模板),您将获得一个“未找到”错误。

另外,如果你用 Apache 在 mod-mono 上运行 mono,我认为它默认在 8080 或 8082 端口上运行,所以你必须输入 http://localhost.com:8080/whatever.aspx

一个更好的主意可能是通过 fastcgi-mono-server4 在 nginx 上运行 servicestack。

【讨论】:

    【解决方案2】:

    这听起来像大小写-出于性能原因,您应该修复它,但与此同时,您可以通过在开始单声道进程之前按如下方式设置 MONO_IOMAP 环境变量来让 Mono 忽略大小写,例如我在我的服务脚本中使用以下内容:

    export MONO_IOMAP=all
    ${MONOSERVER} /applications=${WEBAPPS} /socket=tcp:127.0.0.1:9000 &
    

    这里有记录:

    http://www.mono-project.com/IOMap

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-12
      • 2013-12-16
      • 1970-01-01
      • 2015-01-19
      • 2017-08-19
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      相关资源
      最近更新 更多