根据ServiceStack网站的说法,使用Mono在Linux上运行ServiceStack应该很容易。我在系统上安装了nginx,mono 3.0和fastcgi(Ubuntu 12.10)。我使用this教程来运行Nginx和fastcgi。在MonoDevelop中,我右键单击了该项目,然后是工具 - >部署到Web。这会生成我要部署的文件。然后我将dll复制到Ubuntu上的/ var / www / project_folder。接下来我开始使用Nginx和fastcgi。我的web.config文件如下所示:
<?xml version="1.0"?>
<configuration>
<system.web>
<customErrors mode="Off"/>
<httpHandlers>
<add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
</httpHandlers>
<compilation>
<assemblies>
<add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
</system.web>
<!-- Required for IIS 7.0 (and above?) -->
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
</handlers>
</system.webServer>
</configuration>
我没有将XSP添加到服务器。 当我去服务器上的网页(远程地址)时,我收到一个错误,告诉我它无法找到ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory。 web.config文件与包含此ServiceStackHttpHandlerFactory的dll位于同一文件夹中。
任何想法导致了什么?
答案 0 :(得分:2)
首先,如果您还没有阅读它们,则应该通过获取ServiceStack running on Mono/Linux的wiki文档。
您复制了哪些ServiceStack.dlls以及从哪里获取它们?
ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory
是ASP.NET入口点,它在核心ServiceStack.dll
二进制文件中可用。
如果找不到入口点ServiceStack.dll,那么在Mono FastCGI / ASP.NET主机中找到ServiceStack .dll一定存在问题,在ASP.NET应用程序中它应该在{ {1}}相对于/bin
所在位置的文件夹。如果所有文件都在正确的位置,则可能是文件权限问题。