Проблема маршрутизации с определенным именем контроллера с использованием ASP.NET MVC 1 в IIS 7

Я присоединился к команде, разрабатывающей приложение ASP.NET MVC версии 1. Я запускаю это приложение на своем локальном компьютере с помощью IIS версии 7.5. Моя операционная система — Windows Server 2008 R2 Enterprise Edition. Я использую Visual Studio 2008 SP1 для разработки.

Один из контроллеров в этом приложении называется ReportsController. Записи таблицы маршрутов для этого контроллера используют «Отчеты» в качестве части имени контроллера. Моя проблема заключается в том, что, используя IIS 7.5 на моем локальном компьютере, я просто не могу получить доступ ни к одному из методов действия отчетов. Если я попытаюсь получить доступ, скажем, к «/Reports/Index» из Chrome или Firefox, я получу ответ 401 Unauthorized (как показано с помощью Fiddler), и браузер отобразит диалоговое окно ввода имени пользователя/пароля.

Обратите внимание на следующее:

  • Все остальные неотчетные страницы в приложении работают корректно.
  • Если я добавлю точку останова в Application_BeginRequest, она не сработает при запросе страницы отчетов.
  • Если я изменю записи маршрутизации отчетов в регистрационном коде таблицы маршрутов так, чтобы мне нужно было обращаться к путям типа «/Reportss/Index» (обратите внимание на дополнительные «s»), тогда эти страницы отчетов будут работать правильно.
  • Я попытался удалить, а затем воссоздать свое веб-приложение в IIS.
  • Страницы отчетов работают нормально, если я запускаю приложение с помощью сервера разработки Visual Studio 2008 (Cassini).
  • В каталоге приложения нет каталога Reports.
  • Страницы отчетов корректно работают в нашей среде UAT, а также в IIS 7.5.
  • Я несколько раз пересматривал свои настройки IIS, в том числе сравнивал их с настройками UAT, и не вижу проблемы.

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


person stevejay    schedule 05.02.2011    source источник
comment
Вы сравнивали файлы web.config? Простые вещи, такие как http-модули, отсутствующие или расположенные в неправильном порядке, могут привести к подобным вещам. В вашей папке представлений может быть файл web.config, возможно, стоит проверить, что, основываясь на статье, я обнаружил, что это может быть связано с защищенными путями. haacked.com/archive/2008/06/25/ aspnetmvc-block-view-access.aspx   -  person Hawxby    schedule 05.02.2011
comment
поищите во всех ваших файлах решений слово reports.. может быть, вы найдете какой-то код, который делает что-то особенное для этого маршрута или этого контроллера (возможно, атрибут авторизации где-то, может быть, на каком-то базовом контроллере или что-то подобное). Также параметры аутентификации настраиваются в web.config, как уже предлагал Хоксби.   -  person mare    schedule 05.02.2011
comment
Однако, поскольку кажется, что это связано только с одним конкретным сервером Windows и его IIS, это может быть что-то в конфигурации IIS. Возможно, у вас есть другой сайт или виртуальный каталог, который работает с /Reports и для которого могут быть настроены специальные настройки аутентификации/авторизации. Один из них, о котором я могу думать, - это служба отчетов MS SQL Server.   -  person mare    schedule 05.02.2011
comment
@mare это то, что я собирался предложить. @stevejay, готов поспорить, что на этом веб-сайте в IIS установлена ​​служба SSRS.   -  person Sean    schedule 05.02.2011
comment
Вы пробовали использовать Route Tester/Debugger?   -  person Cymen    schedule 05.02.2011
comment
Это только что спасло мою задницу и бесчисленные часы чепухи. Благодарность   -  person wgpubs    schedule 12.08.2011
comment
Боже, вы оба должны работать там же, где и я. Но могу поспорить, что «Отчеты» — очень распространенное имя папки. Похоже, что Microsoft SSRS не должна прослушивать ни один сайт в IIS, которому назначены заголовки хоста. Как-то грубо.   -  person David Storfer    schedule 24.06.2015


Ответы (3)


Если на вашем компьютере установлены службы Reporting Services. попробуйте создать новый веб-сайт и использовать его. Если на вашем компьютере установлена ​​служба SSRS, она использует /reports для размещения отчетов.

person Community    schedule 05.02.2011
comment
Большое спасибо @Cengiz, @mare и @Sean - проблема была в Reporting Services. Я исправил это, обратившись к диспетчеру конфигурации служб отчетов и изменив имя заголовка узла в URL-адресе диспетчера отчетов (который является путем к проблемному каталогу отчетов). - person stevejay; 05.02.2011
comment
+100 - это была огромная помощь. Я выполнил описанную здесь процедуру и изменил порт на 801 -- bretstateham.com/ - person Adam Levitt; 02.12.2012

У меня были проблемы с использованием имени каталога «Отчеты» в корне веб-сайта .net 2.0 на IIS 7.5. Он генерирует ошибку 503, указывающую на наличие ошибки на системном уровне до того, как IIS попытается обслужить страницу. Я не уверен, что службы отчетов установлены на моем сервере. Я просто сменил имя каталога, все ссылки и все заработало.

person Ty Petrice    schedule 10.05.2011

У меня точно такая же проблема в моем приложении MVC со службами отчетов, установленными на том же сервере, где был развернут код. Я изменил URL-адрес диспетчера отчетов в «Конфигурации служб отчетов SQL Server», который был hostName/Reports, и присвоил новое имя, то есть SSRSReports, поэтому виртуальный каталог теперь hostName/SSRSReports.

Теперь мое приложение и отчеты SSRS работают должным образом.

person Kumar Lachhani    schedule 16.05.2017