2013-03-08 19 views
5

我有一個現有的MVC 4應用程序。我想添加服務堆棧。我嘗試安裝了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一個應用程序,並赴/ API,我得到了一個404從一些進一步的研究,我決定通過APPHOST文件手動更新端點:

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

這也似乎沒有工作。我還有什麼遺漏?

謝謝你的時間。

回答

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/{*} PATHINFO」);在Global.asax.cs中的RegisterRoutes例程中做到了這一點。如果您遇到此問題,請務必在註冊默認路線或任何其他路線之前將其添加。 – TheWebGuy 2013-03-08 22:29:47

+1

@Gordon注意:這個信息也包含在NuGet項目的[ReadMe.txt](https://github.com/ServiceStack/ServiceStack/blob/master/NuGet/ServiceStack.Host.Mvc/content/README.txt)文件。 – mythz 2013-03-08 22:37:10