2013-03-08 9 views
5

私は既存のMVC 4アプリケーションを持っています。 Service Stackを追加したかったのです。私は、MVCのホストnugetパッケージをインストールしようとした:ServiceStackとMVC4が結線しない

は、インストール・パッケージ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> 

私はその後、Rまた、これは動作していないようでした

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

:アプリケーションおよび/ APIに行き、私は手動でAPPHOSTファイル経由でエンドポイントを更新することを決めたいくつかのさらなる研究から、404を得ました。ほかに何が足りないのですか?

お時間をいただきありがとうございます。

答えて

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}"); 
+1

追加routes.IgnoreRoute( "API/{*}パス情報")にこれを追加することができます。 Global.asax.csのRegisterRoutesルーチンにはそのトリックが行われました。この問題が発生している場合は、デフォルトルートまたはその他のルートを登録する前に追加してください。 – TheWebGuy

+1

@Gordon注:この情報は、NuGetプロジェクトの[ReadMe.txt](https://github.com/ServiceStack/ServiceStack/blob/master/NuGet/ServiceStack.Host.Mvc/content/README.txt)にも含まれています。ファイル。 – mythz

関連する問題