Servicestack很酷uri在部署时无法解决

时间:2013-10-23 11:25:50

标签: routing servicestack

我们正在开发酷炫的uri(SS v3.9.64,Visual Studio 2012,Framework 3.5),例如:

Routes.Add<Bark>("/bark.ashx/{dogname}", "GET");

但是当我们部署它时,我们可以使用querystring来处理它。当使用以下网址时,我们会收到“未找到请求处理程序”:

http://localhost:51781/IrpfWebApi/bark.ashx/sprocket

我们通过将项目发布到本地并从Visual Studio 2012运行它来重现此问题(它应该是相同的服务器)。

我们使用.ashx扩展名,以便能够在W2003 / IIS6中工作,因为它在几个地方都有解释。

1 个答案:

答案 0 :(得分:2)

IIS 6所需的.ashx扩展名应该是处理程序路径的一部分而不是路由,例如:

  <!-- ServiceStack: Required to host at: /api.ashx -->
  <location path="api.ashx">
    <system.web>
      <httpHandlers>
        <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/>
      </httpHandlers>
    </system.web>

    <!-- Required for IIS7 -->
    <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>
  <!-- Required for MONO -->
  <system.web>
    <httpHandlers>
      <add path="api.ashx*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*"/>
    </httpHandlers>
  </system.web>
  <!-- Required for IIS7 -->
  <system.webServer>
    <!-- ServiceStack: Required -->
    <validation validateIntegratedModeConfiguration="false"/>
  </system.webServer>

然后您的路线注册将是:

Routes.Add<Bark>("/bark/{dogname}", "GET");