Mono 3.0,Ubuntu 12.10,Nginx和ServiceStack

根据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是.如果所有文件都在正确的位置,则可能是文件权限问题.

上一篇:c# – 使用ServiceStack.Text序列化接口类型列表


下一篇:不使用typeNameHandling将Json对象反序列化为多态C#对象