ASP.NET MVC 2 в IIS 6 просто работает с.NET 4
Я установил подстановочный знак в виртуальном каталоге в IIS 6 Windows Server 2003, указывая на C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll, но он не работал. Затем я пытаюсь установить в C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll, и он работал нормально. Но я не хочу, чтобы это работало в v4, потому что у меня есть другие приложения в том же пуле приложений, которые должны работать в.NET2.
Я сделал это пошаговое руководство, которое я нашел лучше, но оно продолжает работать только с.NET 4.
Мое решение на данный момент - установить новую VirtualDirectory, которая имеет AppPool с версией.NET 4. Но это не кажется правильным, потому что для MVC2 должно быть достаточно.NET35 SP1.
Кто-нибудь сталкивался с этой проблемой?
Это должно работать с 3.5... Я использую Reflector, чтобы проверить, есть ли какая-либо dll, которая использует.NET 4, которая может испортить это, но я не нашел ни одного.
Спасибо!
2 ответа
Я следовал многим подобным инструкциям, но ни один из них не работал. На самом деле они работали, если я указываю на C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll. Нет смысла указывать на vap isapi, поскольку предполагается, что в.NET 4 ничего нет.
Я пытаюсь найти некоторые.dll, которые, возможно, подталкивали приложение для работы в.NET4 вместо 3.5, но я не смог найти ни одного.
Решением этой проблемы был переход на MVC 3 и использование прозрачного.NET4, без сомнения, отлично работающего и самой последней версии.
Все хорошо сейчас, но нет реального решения проблемы выше.
Мне удалось заставить его работать в IIS6 на ASP версии 2 и framework 3.5, следуя некоторым инструкциям на http://go.microsoft.com/?LinkId=9394801.
У меня есть виртуальный каталог, который добавляет новое расширение.* И исполняемый файл C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll и снял флажок "проверить, существует ли файл" в разделе "Конфигурация" на вкладке "Виртуальный каталог". кнопка После приведенных ниже обновлений приложение mvc работало без указания каких-либо расширений, таких как.mvc или.aspx. Я не проверял, не вызвало ли это снижение производительности.
Мой файл global.asax.cs по умолчанию теперь выглядит как
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { action = "Index", id = "" }
);
routes.MapRoute(
"Root",
"",
new { controller = "Home", action = "Index", id = "" }
);
ASP2 не распознал тег <%: script, поэтому мне пришлось удалить их и обернуть содержимое с помощью Response.Write (). Например
<li><%: Html.ActionLink("Home", "Index", "Home") %></li>
становится
<li><% Response.Write(Html.ActionLink("Home", "Index", "Home")); %></li>