簡體   English   中英

如何與asp.net MVC 4並排安裝服務堆棧4?

[英]How do I install service stack 4 side-by-side with asp.net MVC 4?

我已經完成了servicestack文檔中的所有步驟,並遵循了Stack Overflow上類似文章的建議,但是每當我嘗試訪問“ / 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”。

最后有人幫助徹底消除元數據。 您需要輸入:

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

我正在使用ServiceStack 3.9.70,對我來說,為了與MVC WebApi一起使用ServiceStack,我必須這樣做:

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

這樣,我可以將api用於WebAPI,將sapi用於ServiceStack。 別忘了您還需要修改Web.Config, 這里有完整的說明

有一個用於托管帶有MVC4的ServiceStack的現有模板,您還想確保已為ServiceStack正確配置了Web.config,可以將其與Mvc4 Web.Config進行比較。

有關與MVC集成的更多信息, 請參見Wiki

自從使用ServiceStack v4以來,此重定向路徑存在類似問題。

作為修復,我發現使用以下HostConfig覆蓋MetadataRedirectPath是HostConfig

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

我認為,如果沒有此配置,則無論是如何確定默認的MetadataRedirectPath還是將重定向URL與處理程序工廠路徑組合在一起都將暴露一個錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM