Проблема ASP.NET MVC 2 - точка в маршруте - PullRequest
5 голосов
/ 20 апреля 2011

Я замираю и мне нужна быстрая рука. Google подвел меня. Я работаю над заменой начального набора WCF / REST на ASP.NET MVC. Я хочу сделать переход максимально безболезненным, поэтому пытаюсь создать маршрут, соответствующий следующему URL:

http://localhost/services/MyService.svc/UserInfo

Я создал маршрут в Global.asax.cs:

routes.MapRoute(
            "MyServiceDefault",
            "services/MyService.svc/{action}/{id}",
            new { 
                  controller = "MyService", 
                  action = "UserInfo", 
                  id = UrlParameter.Optional 
                }
        );

Вскоре я понял, что запрос даже не поступает в мое приложение из-за . в MyService.svc части URL.

Чего мне не хватает, чтобы заставить запрос проходить через мое приложение, а не обрабатываться сервером как статический ресурс?

Обновление

Я забыл упомянуть, что я также пытался добавить следующее в Web.config безрезультатно:

<httpRuntime relaxedUrlToFileSystemMapping="true" />

Ответы [ 3 ]

5 голосов
/ 20 апреля 2011

Оказывается, что поиск правильной комбинации терминов в конечном итоге даст результаты.У Фила Хаака на самом деле есть блок-пост об этой конкретной проблеме:

Переопределение запроса .svc с маршрутизацией

Оказывается, что для расширения * .svc просто добавьте<httpRuntime relaxedUrlToFileSystemMapping="true" /> для Web.config недостаточно.

В одном из файлов каркаса Web.config есть поставщик компоновки, связанный с * .svc, который принимает запрос перед его поступлением в .NET MVC (и завершается неудачей, поскольку на самом деле это не WCF).оказание услуг).Как только вы это узнаете, достаточно просто удалить поставщика сборки в Web.config вашего приложения:

<system.web>
  <compilation debug="true" targetFramework="4.0">
    <buildProviders>
      <remove extension=".svc"/>            
    </buildProviders>
    ...
</system.web>
0 голосов
/ 20 апреля 2011

В этой статье рассказывается, как вы можете использовать различные расширения с приложением asp.net mvc и при этом направлять их в .NET Framework.обратите особое внимание на ту часть, которая начинается с

This is done using a script named registermvc.wsf.
0 голосов
/ 20 апреля 2011

Посмотрите на свойство RouteCollection.RouteExistingFiles . По умолчанию установлено значение false. Возможно, ваша служба находится в пути «Службы» в вашем проекте, и это вызывает проблему.

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