1
  1. BaseLine:ServiceStack 示例适用于库存 MVC 4 应用程序。我正在使用该变体,按照自述文件中的所有说明进行操作,没有问题。

  2. 插件框架我正在为 MVC 构建一个插件框架,servicestack.net 是其中一个插件,因为所有程序集都是使用 BuildManager.AddReferencedAssembly(assembly); 加载的插件;BuildManager.AddCompilationDependency(assembly.FullName);

从我的个人 shawdowFolder 中找到并成功加载了所有 ServiceStack dll。

网络配置:

<location path="api">
<system.web>
  <httpHandlers>
    <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory,ServiceStack" verb="*" />
  </httpHandlers>
</system.web>

<!-- Required for IIS 7.0 -->
<system.webServer>
  <modules runAllManagedModulesForAllRequests="true" />
  <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>
</location>

*注意:我从 Application_Start AppHost.Init() 调用,我可以单步执行它,以便在 ASP.NET 应用程序全面展开之前真正加载并使用 ServiceStack。*

首次启动时:/api/metadata 会导致:

“/”应用程序中的服务器错误。

无法找到该资源。说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的 URL:/api/metadata

停止调试器并简单地重新启动,这会从我的个人 shawdowFolder 中删除所有程序集,复制它们,加载它们,引用它们,结果。

一个工作的 ServiceStack.net
StarterTemplate ASP.NET 主机

支持以下操作。有关正式定义,请查看 Service XSD。等等

我怀疑这可能与 .NET 的 shadowfolder 和 appdomain 有关,但可能与 ServiceStack 有关。我在哪里可以找到日志来查看 ServiceStacks httphanderfactory 是否有问题。

4

1 回答 1

2

我改变了我的配置如下:

 SetConfig(new EndpointHostConfig
            {  ServiceStackHandlerFactoryPath = "ss"}

和我的配置:

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add type="DevExpress.Web.ASPxClasses.ASPxHttpHandlerModule, DevExpress.Web.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
      <add name="FormsAuthenticationDisposition" type="ServiceStack.ServiceInterface.SuppressFormsAuthenticationRedirectModule, ServiceStack.ServiceInterface" />
    </modules>
    <handlers>
      <add type="DevExpress.Web.ASPxUploadControl.ASPxUploadProgressHttpHandler, DevExpress.Web.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" name="ASPxUploadProgressHandler" preCondition="integratedMode" />
      <add type="DevExpress.Web.ASPxClasses.ASPxHttpHandlerModule, DevExpress.Web.v13.1, Version=13.1.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET" path="DX.ashx" name="ASPxHttpHandlerModule" preCondition="integratedMode" />
    <add path="ss*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" /></handlers>
    <validation validateIntegratedModeConfiguration="false" />
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="30000000" />
      </requestFiltering>
    </security>
  </system.webServer>

现在我必须输入以下内容才能进入我的服务堆栈区域:http://localhost/ss/

我对出了什么问题的看法是,mvc/asp.net forms/servicestack 每个都需要一个入口点来将其处理程序映射到 url 路由,servicestack 正在覆盖“/”您的 MVC 项目的 url 路由,因此找不到资源。

因此,在我的应用程序中,我曾经分隔入口点: *http://localhost/* ....是我的 webforms 的正常入口点(在你的情况下是 MVC4 [stock]) http://localhost/ss......是我的 servicesstack 入口点

如果您使用的是 MVC 剃须刀引擎,则不会遇到此问题。

于 2013-10-14T07:37:04.873 回答