Предоставлять сервисы WCF, принадлежащие приложению Area in MVC, по маршрутизированному пути. - PullRequest
14 голосов
/ 29 октября 2010

У меня есть служба WCF (скажем, TestService.svc, находящаяся в каталоге services области в приложении MVC. Эта область объединена в основное приложение. Область называется content.

Маршруты были настроены, и район работает нормально. Чтобы получить доступ к действию Index на контроллере Home, я могу сделать следующее:

http://my-host/areas/content/index/home

или

http://my-host/content/index/home

Файл SVC, однако, может быть доступен только через:

http://my-host/areas/content/services/TestService.svc

URL должен содержать каталог areas, я не могу получить к нему прямой доступ через http://my-host/content/services/TestService.svc. Если я пытаюсь, мне выдается ошибка 404.

Есть ли способ настроить приложение так, чтобы оно направляло запрос SVC через ту же таблицу маршрутов, что и контроллеры? Я не хочу использовать areas для услуг.

1 Ответ

24 голосов
/ 25 февраля 2011

Если у вас есть свобода использования .Net 4.0, вы можете рассмотреть вопрос о том, чтобы сделать вашу службу WCF доступной через ServiceRoute , а не через файл .svc.

Это позволит вамчтобы избежать наличия файла TestService.svc с выделенным кодом TestService.svc.cs.В вашем Global.asax.cs вы будете иметь следующее:

public static void RegisterRoutes(RouteCollection routes, IUnityContainer container)
{
    ... other MVC route mapping ....
    routes.Add(new ServiceRoute("TestService", new ServiceHostFactory(), typeof(LoaEvents)));
}

Ваша служба должна быть доступна через http://my-host/TestService.

Возможно, вы сможете изменить аргумент "TestService"на "/content/services/TestService" или что-то, что работает лучше для ваших нужд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...