2013-03-08 6 views
5

Mam istniejącą aplikację MVC 4. Chciałem dodać do tego Service Packa. Próbowałem zainstalować pakiet gospodarz Nuget MVC:ServiceStack i MVC4 nie podłączają się do sieci

Install-Package ServiceStack.Host.Mvc

on instalowany 2 pliki w App_Start. Zauważyłem, musiałem dokonać niewielkich zmian bo otrzymuję błąd kompilacji:

W App_State/WebServiceExamples.cs musiałem zaktualizować odniesienia interfejs:

Od: public class HelloService : Service

Do: public class HelloService : ServiceStack.ServiceInterface.Service

potem poszedł do przodu i dwukrotnie sprawdzane ustawienia 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> 

potem R aplikacja i poszedł/API, mam 404. Od pewnego dalszych badań postanowiłem ręcznie zaktualizować punkt końcowy za pomocą pliku apphost:

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

To również nie wydają się działać. Czego jeszcze brakuje?

Dzięki za poświęcony czas.

Odpowiedz

6

ten powinien być w pliku web.config, a także:

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

Również nie zapomnij usunąć MVC '/ api' trasa/ścieżka. Musisz go usunąć, aby ServiceStack i MVC nie konkurowały o trasę/ścieżkę '/ api'.

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

Jeśli chcesz być prawdziwym wyraźne można również dodać to do RouteConfig

routes.IgnoreRoute ("api/{*pathInfo}"); 
+1

Dodano routes.IgnoreRoute ("api/{*} pathinfo"); do ruty RegisterRoutes w Global.asax.cs załatwiło sprawę. Jeśli masz ten problem, pamiętaj o dodaniu go przed zarejestrowaniem domyślnej trasy lub innych tras. – TheWebGuy

+1

@Gordon Uwaga: ta informacja jest również zawarta w pliku [ReadMe.txt] projektu NuGet (https://github.com/ServiceStack/ServiceStack/blob/master/NuGet/ServiceStack.Host.Mvc/content/README.txt) plik. – mythz