servicestack,C#,Asp.net Mvc 4,Routing,Localhost,servicestack" /> servicestack,C#,Asp.net Mvc 4,Routing,Localhost,servicestack" />

C# 如何将service stack 4与asp.net MVC 4并排安装?

C# 如何将service stack 4与asp.net MVC 4并排安装?,c#,asp.net-mvc-4,routing,localhost,servicestack,C#,Asp.net Mvc 4,Routing,Localhost,servicestack,我已经完成了servicestack文档中的所有步骤,并遵循了此处关于堆栈溢出的类似帖子的建议,但每当我尝试访问我的“/api/”路由时,我都会遇到以下错误: Handler for Request not found: Request.HttpMethod: GET Request.PathInfo: /api/metadata Request.QueryString: Request.RawUrl: /api/api/metadata 守则的有关章节: AppHost: publi

我已经完成了servicestack文档中的所有步骤,并遵循了此处关于堆栈溢出的类似帖子的建议,但每当我尝试访问我的“/api/”路由时,我都会遇到以下错误:

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”。

有一个用于托管的现有模板,您还需要确保您的Web.config已为ServiceStack正确配置,您可以将其与进行比较


有关与MVC集成的详细信息如下。

有一个现有的托管模板,您还需要确保您的Web.config已正确配置为ServiceStack,您可以将其与进行比较


有关与MVC集成的更多信息,请参阅。

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

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

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

我认为,如果没有此配置,将在如何确定默认的
MetadataRedirectPath
或如何将重定向url与处理程序工厂路径相结合方面暴露一个错误。

自从使用ServiceStack的v4以来,我对此重定向路径也有类似的问题

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

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

我认为如果没有这个配置,就会暴露出一个bug,不管是默认的元数据重定向路径是如何确定的,还是重定向url是如何与处理程序工厂路径相结合的。

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

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

最后,有人帮助彻底消除元数据。 你需要把:

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

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

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

这样,我可以对WebAPI使用
api
,对ServiceStack使用
sapi
。别忘了还需要修改Web.Config。

我正在使用ServiceStack 3.9.70,为了将ServiceStack与MVC WebApi一起使用,我必须这样做:

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

这样,我可以对WebAPI使用
api
,对ServiceStack使用
sapi
。别忘了还需要修改Web.Config。

重定向到元数据页面的代码似乎有问题。如果handlerfactorypath为“api”,则默认MetdataRedirectPath被确定为“api/元数据”。ServiceStack.HttpHandlerFactory试图通过简单地将这两个链接在一起来创建一个绝对url。重定向到元数据页面的代码似乎有问题。如果handlerfactorypath为“api”,则默认MetdataRedirectPath被确定为“api/元数据”。ServiceStack.HttpHandlerFactory试图通过简单地将它们连接起来,从这两者创建一个绝对url。