Ответ 1
Изменение пула приложений с Classic на Integrated устранило проблему. спасибо вам за помощь.
Я новичок в MVC и Routing, и мне было предложено изменить приложение, чтобы использовать разные URL-адреса. задача, которая немного над мной, так как у меня нет опыта.
ok, давайте поговорим о некотором коде:
routes.MapRoute(
"CategoryBySeName", // Route name
"products/{SeName}", // URL with parameters
new { controller = "Catalog", action = "CategoryBySeName" }
);
это работает так, как ожидалось, но тогда клиент хотел ".html" в конце путей, поэтому я изменил:
"products/{SeName}", // URL with parameters
в
"products/{SeName}.html", // URL with parameters
который не работает (страница IIS 404 - MapRequestHandler) похоже, что iis пытается загрузить физический файл с этим именем, а не передавать его в приложение.
Аналогично: ASP.NET MVC Маршрутизация для начала на странице html (не ответил, не дублируется)
Изменение пула приложений с Classic на Integrated устранило проблему. спасибо вам за помощь.
Вы предполагаете, что обработчик IIS, вероятно, захватывает запрос до MVC, вероятно, правильный.
Предполагая, что IIS 7: http://technet.microsoft.com/en-us/library/cc770990(v=ws.10).aspx
Вам нужно отредактировать обработчик .html в IIS для использования ASP.NET.
Вы можете найти его в свойствах веб-сайта на вкладке домашнего каталога в конфигурации приложения в разделе сопоставлений в разделе II6.
Что-то в строках (версия может быть разной): C:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll - это то, что вам нужно для обработки файлов .html.
Вам нужно принудительно выполнить весь запрос через конвейер ASP.NET, и вы можете сделать это, добавив только эту единственную строку в web.config вашего приложения:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
Просто добавьте этот раздел в Web.config, и все запросы к маршруту /{* pathInfo} будут обрабатываться указанным обработчиком, даже если в pathInfo есть точки. (взято из примера ServiceStack MVC Host Web.config и этого ответа fooobar.com/info/26862/...)
<location path="route">
<system.web>
<httpHandlers>
<add path="*" type="System.Web.Handlers.TransferRequestHandler" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" />
</httpHandlers>
</system.web>
<!-- Required for IIS 7.0 -->
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add name="ApiURIs-ISAPI-Integrated-4.0" path="*" type="System.Web.Handlers.TransferRequestHandler" verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
</location>