2013-06-26 45 views
1

通過nuget安裝ServiceStack: 在新的MVC4應用上安裝ServiceStack.Host.Mvc。http:// localhost:1000/api/todos 404使用ServiceStack找不到

閱讀「ReadMe.txt」它說: 在Global.asax文件中註釋掉WebApiConfig.Register(GlobalConfiguration.Configuration),所以它不會干擾ServiceStack。

而且這是爲了增加它,它的工作:

routes.IgnoreRoute("api/{*pathInfo}"); 
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); //Prevent exceptions for favicon 

這裏是我的Global.asax:

public class MvcApplication : System.Web.HttpApplication 
    { 
     protected void Application_Start() 
     { 
      AreaRegistration.RegisterAllAreas(); 

      // WebApiConfig.Register(GlobalConfiguration.Configuration); 
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
      RouteConfig.RegisterRoutes(RouteTable.Routes); 

      BundleConfig.RegisterBundles(BundleTable.Bundles); 
      AuthConfig.RegisterAuth(); 

      RouteTable.Routes.IgnoreRoute("api/{*pathInfo}"); 
      RouteTable.Routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); 

      BootstrapSupport.BootstrapBundleConfig.RegisterBundles(System.Web.Optimization.BundleTable.Bundles); 
      BootstrapMvcSample.ExampleLayoutsRouteConfig.RegisterRoutes(RouteTable.Routes); 
     } 

     protected void Application_BeginRequest(object src, EventArgs e) 
     { 
      if (Request.IsLocal) 
       ServiceStack.MiniProfiler.Profiler.Start(); 
     } 

     protected void Application_EndRequest(object src, EventArgs e) 
     { 
      ServiceStack.MiniProfiler.Profiler.Stop(); 
     } 
    } 

這是怎樣的NuGet配置的web.config中:

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

運行該項目,它會自動啓動default.htm頁面,該頁面具有綁定到/ api/URI的BackBone UI,該頁面返回404,我錯過了什麼?

+0

前前RouteConfig.RegisterRoutes(RouteTable.Routes);

以添加行

RouteTable.Routes.IgnoreRoute("api/{*pathInfo}"); RouteTable.Routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); 

或添加行到RouteConfig.cs文件已取出自帶的東西的WebAPI與mvc4項目? –

回答

0

路線的登記順序很重要。我認爲你需要的routes.MapRoute()

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.IgnoreRoute("api/{*pathInfo}"); 
     routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
} 
+0

謝謝你做到了! – Val

相關問題