1

ServiceStack.Host.MVC多くのコントローラーを持つ既存の MVC3 プロジェクトにインストールしました。

現在、default.htm にルーティングされています。デフォルトのリダイレクトパスを変更するように言われた別のStackOverFlowの質問を見つけました。次のことを行ってください。

SetConfig(new EndpointHostConfig {DefaultRedirectPath = "/Foo" });

しかし、global.ascx に設定されているデフォルトの Controller と Action を実行するように変更したいのです。/Homeを指すように DefaultRedirectPath を編集しましたが、正常に動作しているようで、ホームを URL などに追加しませんが、アプリケーションに AppHost があることとの関係について 100% ではありません。

これを変更することが適切でない場合、Service Stack AppHost を通常の MVC アプリケーションに統合する最良の方法は何ですか。ベースコントローラーを に移動しServiceStackController、ゆっくりと新しいセッションとユーザー管理機能を使い始めます。最終的には、一部のサービスで承認または共有 sessionId を使用する予定ですが、それについては後で説明します。

まず、私の目標は、Funq の IOC 機能の一部を使い始めることです。

4

2 に答える 2

2

DefaultRedirectPath は、定義済みの URL へのリダイレクトにすぎないため、おそらく必要ありません。古い URL を使用する場合は MVC コントローラーをヒットさせ、ServiceStack 用の新しい URL 領域を用意する必要があります。これを行うには、設定から始めますServiceStackHandlerFactoryPath。サブ URL で ServiceStack をホストできるようにする必要があり、パスに競合がない限り、既存のコントローラーに干渉しません。

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

web.config の ServiceStack http ハンドラーが一致する必要があります。

<location path="api">
<!-- 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>
于 2013-02-15T17:42:38.393 に答える
1

ServiceStack BootstrapAPI アプリケーションは、CatchAllController を MVC アプリケーションの HomeController に設定します。これは私にとってはうまくいきました。

AppHost::Configure に、次のコードを追加します。

public override void Configure(Funq.Container container)
{
  //  Other Configuration constructs here

  ServiceStackController.CatchAllController = reqCtx => container.TryResolve<HomeController>();
}
于 2013-02-19T15:31:02.800 に答える