C# 如何将service stack 4与asp.net MVC 4并排安装?
我已经完成了servicestack文档中的所有步骤,并遵循了此处关于堆栈溢出的类似帖子的建议,但每当我尝试访问我的“/api/”路由时,我都会遇到以下错误: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
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。