Работают ли стандартные веб-службы (asmx) с MVC?
Я только что попытался добавить веб-сервис (на основе asmx) из проекта WebForms в новый проект MVC. Кажется, я не могу добраться до веб-сервиса asmx в IE?
в MVC это должно работать одинаково, у меня есть служба в папке Services, должно ли это быть в представлении или должно ли это asmx работать вне маршрутизации "MVC"?
обновление:
Я настроил веб-сервис, изначально падающий в .файл asmx на тестовый сервер, недавно установленный с помощью .Net 4.0 для проект VS2010 MVC 2. (Windows Server 2003 IIS 6)
тот же веб-сервис на машине разработки (VS 2010) доступен для просмотра? Любые идеи о разнице, возможно, проблема установки?
5 ответов
по словам Скотт Хансельман, запрос по умолчанию не обрабатывается ASP.NET механизм маршрутизации MVC:
Почему нет ASP.NET MVC захватить запрос? По двум причинам. Во-первых, есть опция RouteCollection под названием RouteExistingFiles. По умолчанию установлено значение false, что вызывает ASP.NET MVC автоматически пропускает маршрутизацию, когда файл существует на диске. (источник)
Что бы указать, что есть проблема где-то еще.
Если вы хотите быстрое / простое / грязное решение, как-то вытащите службу ASMX из маршрутизации MVC.
Если вы хотите сделать все лучше, вытащите логику из службы ASMX и создайте для нее новую страницу в своем приложении MVC. Затем вы можете реализовать логику в своем контроллере и разрешить представлению обрабатывать возврат сообщения SOAP (или вы можете пойти с JSON в зависимости от того, кто потребляет службу).
отвечая на мой собственный вопрос..
Я вижу службы WCF при создании базовой службы (и не могу видеть службы asmx)
поскольку WCF считается способом пойти в любом случае, я делаю это.
Я не настаивал на том, чтобы asmx работал.
да, я создал базовый проект, затем я щелкнул правой кнопкой мыши по имени проекта и добавил файл веб-сервиса с демонстрацией hello world в нем. Если вы просмотрите этот файл в браузере, он отлично работает.
Он должен работать вне MVC-маршрутизации. Достаточно просто создать папку с asmx-файлами. У меня есть папка "webservices" внутри моего проекта, и она отлично работает! Нет необходимости устанавливать маршрутизацию для игнорирования пути, файл существует на сервере.