4

根据 ServiceStack 网站,使用 Mono 在 Linux 上启动和运行 ServiceStack 应该很容易。我已经在系统(Ubuntu 12.10)上安装了 nginx、mono 3.0 和 fastcgi。我已经使用教程来运行 Nginx 和 fastcgi。在 MonoDevelop 中,我右键单击该项目,然后是 Tools -> Deploy to 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 位于同一文件夹中。

任何想法是什么原因造成的?

4

1 回答 1

2

首先,如果您还没有阅读它们,您应该阅读关于让ServiceStack 在 Mono/Linux 上运行的 wiki 文档。

您复制了哪些 ServiceStack.dll 以及从哪里获得它们?这ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory是 ASP.NET 入口点,它在核心ServiceStack.dll二进制文件中可用。

如果找不到入口点 ServiceStack.dll,那么在 Mono FastCGI/ASP.NET 主机中查找 ServiceStack .dll 时一定有问题,在 ASP.NET 应用程序中,它应该位于与/bin您所在位置相关的文件夹Web.Config中. 如果所有文件都在正确的位置,则可能是文件权限问题。

于 2013-01-29T18:24:46.067 回答