5

既存のMVC4アプリケーションがあります。それにサービススタックを追加したかったのです。MVCホストnugetパッケージをインストールしてみました:

インストールパッケージServiceStack.Host.Mvc

App_Startに2つのファイルをインストールしました。ビルドエラーが発生したため、わずかな変更を加える必要があることに気付きました。

App_State / WebServiceExamples.csで、インターフェイス参照を更新する必要がありました。

から:public class HelloService : Service

に:public class HelloService : ServiceStack.ServiceInterface.Service

次に、先に進み、Web.configの設定を再確認しました。

<location path="api">
  <system.web>
    <httpHandlers>
      <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
    </httpHandlers>
    <authorization>
      <allow users="*"/>
    </authorization>
  </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>

次に、アプリケーションを実行して/ apiに移動し、404を取得しました。さらに調査した結果、apphostファイルを使用してエンドポイントを手動で更新することにしました。

SetConfig(new EndpointHostConfig
{
ServiceStackHandlerFactoryPath = "api",
});

これもうまくいかなかったようです。他に何が欠けていますか?

御時間ありがとうございます。

4

1 に答える 1

6

これは、web.configファイルにも含まれている必要があります。

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

また、MVC'/api'ルート/パスを削除することを忘れないでください。ServiceStackとMVCが「/api」ルート/パスをめぐって競合しないように、これを削除する必要があります。

//REMOVE THIS FROM RouteConfig
routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
);

本当に明示的にしたい場合は、これをRouteConfigに追加することもできます

routes.IgnoreRoute ("api/{*pathInfo}");
于 2013-03-08T22:02:54.053 に答える