在linux上使用mono的ServiceStack

3
我对Linux或Mono一无所知。我正在WebMatrix中构建Web应用程序。我使用ServiceStack设置了简单的服务和一个cshtml测试页面。在Windows上运行一切正常,但是当我将文件移动到Linux服务器后,我的页面可以工作,但是对ServiceStack服务进行RESTful调用时却返回404未找到错误。我是否遗漏了什么?在Linux上,Mono是否以相同的方式读取web.config和global.asax文件?
谢谢。

不要把你的文件移到 Linux 系统上,而是不要移动你的文件到 Linux 系统上 :) - VoidKing
这很有趣,我完全同意你的看法。然而,我的朋友在他的服务器上为我留了一个位置。 - Kirby
伙计,我真希望能帮你,但我很久以前就放弃了Linux。你可以研究Linux并得到大约80个不同的答案,然而,它们每一个都是错误的。简而言之,在任何Linux发行版中学习如何做任何事情就像这样:(Linux + (∞ * [尝试次数]) = (史诗级 + 失败)^∞) - VoidKing
1
我会给你的帖子点赞,因为这是一个好问题,显然值得。 - VoidKing
我在Linux上运行ServiceStack毫无问题。如果您更具体地设置,即使用什么Web服务器(xsp/fastcgi/apache+mod_mono),并可能发布配置文件和global.asax,那么可能会有所帮助。 - Dynalon
显示剩余3条评论
2个回答

1

听起来像是大小写问题 - 出于性能原因,您应该解决这个问题,但同时您可以通过在启动mono进程之前设置MONO_IOMAP环境变量来忽略大小写,例如我在我的服务脚本中使用以下内容:

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

这里有文档:

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


1
是的,它们读取的内容是一样的。
但是...
Linux使用区分大小写的文件系统。
因此,如果您输入:
http://localhost.com/whatever.aspx
而您的站点实际上被称为whatever.aspx,那么它将起作用。

然而,如果您输入Whatever.aspx,那么会得到404错误。

此外,如果您的站点代码后端称为Master.cs(带有class Master),并且您在aspx文件中引用它为master.cs(例如默认的Visual Studio Web应用程序模板),则会出现“未找到”错误。

另外,如果您在Apache上使用mod-mono运行mono,则默认情况下它会在端口8080或8082上运行,因此您必须键入http://localhost.com:8080/whatever.aspx

更好的方法可能是通过fastcgi-mono-server4在nginx上运行servicestack。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接