Ошибки ASP.Net MVC 404, когда маршрут содержит расширение .svc - PullRequest
2 голосов
/ 18 февраля 2011

У меня есть сайт ASP.Net MVC 2, настроенный под IIS7 с использованием интегрированного конвейера со следующим маршрутом:

routes.MapRoute(
    "MyRoute",
    "mycontroller/{name}/{*path}",
    new { controller = "MyController", action = "Index", path = UrlParameter.Optional }
);

Нет никаких других маршрутов выше этого маршрута, но всякий раз, когда я пытаюсь получить доступ к вышеуказанному маршруту со значением пути, имеющим расширение .svc, например:

http://localhost/MyVirtualDirectory/mycontroller/test/somepath.svc

ASP.Net возвращает ошибку 404 без выполнения моего контроллера (у меня есть вызов сообщения журнала в начале метода действия). Если я изменяю расширение на что-то мягкое (например, .txt), оно работает отлично, поэтому кажется, что где-то в строке ASP.Net интерпретирует запрос как стандартный вызов ASP.Net для веб-службы, которая не не существует - это определенно ответ ASP.Net 404 (не ответ IIS).

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

1 Ответ

5 голосов
/ 18 февраля 2011

Настроен ли IIS на файлы .svc сервера?Вам может понадобиться добавить MIME-тип .svc в IIS

В IIS

  1. Выберите свой веб-сайт
  2. Нажмите Типы MIME
  3. Нажмите «Добавить», чтобы добавить MIME-тип .svc

Обновление

Попробуйте этот ответ

Проблема, с которой вы столкнулись, связана с поставщиком сборки, который зарегистрирован для файлов .svc.Этот поставщик сборок зарегистрирован в файле web.config уровня машины по умолчанию.

Обновите ваш web.config

<system.web>
  <compilation debug="true" targetFramework="4.0">
    <buildProviders>
        <remove extension=".svc"/>            
    </buildProviders>

Полный пост Фила Хаака по этому вопросу

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