如何与asp.net MVC 4并排安装服务堆栈4?

时间:2013-12-13 17:43:41

标签: c# asp.net-mvc-4 routing localhost servicestack

我已经完成了servicestack文档中的所有步骤,并遵循Stack Overflow上类似帖子的建议,但每当我尝试访问我的“/ api /”路由时,我都会收到以下错误:< / p>

Handler for Request not found: 


Request.HttpMethod: GET
Request.PathInfo: /api/metadata
Request.QueryString: 
Request.RawUrl: /api/api/metadata

代码的相关部分:

APPHOST:

public class HolidayEventPlannerAppHost : AppHostBase
    {
        public HolidayEventPlannerAppHost() : base("Holiday Event Planner App Host", typeof(HelloService).Assembly) { }

        public override void Configure(Funq.Container container)
        {
            SetConfig(new HostConfig { HandlerFactoryPath = "api" });
        }
    }

Routeconfig.cs:

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.IgnoreRoute("api/{*pathInfo}");

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

此外,当我在浏览器的地址栏中输入“localhost:port / api”时,浏览器会被重定向到“localhost:port / api / api / metadata”,这是我收到错误消息的地方。它不会让我访问“localhost:port / api / metadata”。

4 个答案:

答案 0 :(得分:2)

最后有人帮助完全消除元数据。 你需要把:

SetConfig(new HostConfig
    {
        HandlerFactoryPath = "api",
        MetadataRedirectPath = "/"
    }); 

答案 1 :(得分:2)

我正在使用ServiceStack 3.9.70,为了使用ServiceStack和MVC WebApi我必须这样做:

SetConfig(new EndpointHostConfig
    {
        ServiceStackHandlerFactoryPath = "sapi",
        MetadataRedirectPath = "sapi/metadata"
     });

这样我可以将api用于WebAPI,将sapi用于ServiceStack。不要忘记你需要修改Web.Config,full instruction here

答案 2 :(得分:1)

现有托管ServiceStack with MVC4的模板,您还需要确保为ServiceStack正确配置了Web.config,您可以将其与Mvc4 Web.Config进行比较。

有关与MVC集成的更多信息是available on the wiki

答案 3 :(得分:1)

自从使用ServiceStack的v4以来,我在此重定向路径中遇到了类似的问题。

作为修复,我发现使用以下HostConfig覆盖MetadataRedirectPath:

        SetConfig(new HostConfig
        {
            HandlerFactoryPath = "api",
            MetadataRedirectPath = "/metadata"
        });

我认为如果没有此配置,则会在默认MetadataRedirectPath的确定方式或重定向网址与处理程序工厂路径的组合方式中暴露错误。