根据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位于同一文件夹中.
是什么原因引起了这个?
解决方法:
首先,如果你还没有读过它们,你应该通过获取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应用程序中它应该在/ bin文件夹中相对于哪里你的Web.Config是.如果所有文件都在正确的位置,则可能是文件权限问题.