2013-12-13 3 views
1

Я выполнил все шаги в документации по обслуживанию и следил за советом аналогичного сообщения здесь, в разделе «Переполнение стека», но всякий раз, когда я пытаюсь получить доступ к моему маршруту «/ api /», я получаю следующую ошибку:Как установить стек службы 4 рядом с asp.net MVC 4?

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».

ответ

2

Наконец-то кто-то, кто полностью избавится от метаданных. Вам нужно положить:

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

Существует существующий шаблон для размещения ServiceStack with MVC4, вы также должны убедиться, что ваш Web.config настроен правильно для ServiceStack, который вы можете сравнить с Mvc4 Web.Config.

Дополнительная информация об интеграции с MVC: available on the wiki.

+0

Кажется, что проблема связана с кодом, который перенаправляется на страницу метаданных. Если handlerfactorypath является «api», по умолчанию MetdataRedirectPath определяется как «api/metadata». Служба ServiceStack.HttpHandlerFactory пытается создать абсолютный URL из этих двух, просто присоединив их. –

1

У меня были схожие проблемы с этим путем перенаправления с момента использования v4 ServiceStack.

Как исправить, я обнаружил, что переопределение MetadataRedirectPath со следующим HostConfig работало:

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

Я думаю, что без этого конфиги, ошибка, разоблачают либо как по умолчанию MetadataRedirectPath определяются или как перенаправление url объединен с заводским путем обработчика.

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.