развертывание приложения asp.net mvc в среде iis7 .net 4.0, изображения и CSS не загружаются - PullRequest
1 голос
/ 03 августа 2010

Я выполняю шаги, перечисленные здесь: http://msdn.microsoft.com/en-us/library/dd483478.aspx В нижней части этой страницы приведены шаги для ручной миграции web.config из .net 3.5 в 4.0

.

В настоящее время сайт загружается и работает нормально, за исключением статических данных - изображений, css ..

все в руководстве по миграции работает нормально, за исключением: "7. Удалите все между начальным и конечным тегами раздела system.webserver, но оставьте сами теги".

когда я это делаю, я получаю сообщение об ошибке:

"HTTP 500.22 Module ConfigurationValidationModule   
Notification BeginRequest   
Handler Not yet determined   
Error Code 0x80070032 "

мой system.webserver выглядит следующим образом (я вручную изменил ссылки 3.5.0.0 на 4.0.0.0):

 <system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules runAllManagedModulesForAllRequests="true">
   <remove name="UrlRoutingModule"/>
   <remove name="ScriptModule"/>
   <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
   <add name="UrlRoutingModule" preCondition="" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
  </modules>
  <handlers>
   <remove name="WebServiceHandlerFactory-Integrated"/>
   <remove name="ScriptHandlerFactory"/>
   <remove name="ScriptHandlerFactoryAppServices"/>
   <remove name="ScriptResource"/>
   <remove name="BlockViewHandler"/>
   <remove name="MvcHttpHandler"/>
   <remove name="UrlRoutingHandler"/>
   <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"/>
   <add name="MvcHttpHandler" preCondition="integratedMode" verb="*" path="*.mvc" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
   <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
   <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
   <add name="ScriptResource" verb="GET,HEAD" path="ScriptResource.axd" preCondition="integratedMode" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
   <add name="UrlRoutingHandler" verb="*" path="UrlRouting.axd" preCondition="integratedMode" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/></handlers>
 </system.webServer>

Кто-нибудь знает, почему я не могу удалить раздел, как говорится в руководстве? а почему статические файлы не загружаются? Я полагаю, что это связанная проблема. заранее спасибо!

РЕДАКТИРОВАТЬ: если я удаляю строку BlockViewHandler, все загружается нормально. Я до сих пор не уверен, почему не могу удалить весь этот раздел, как говорится в руководстве по миграции.

1 Ответ

0 голосов
/ 04 августа 2010

Здесь больше об этой ошибке: Конфигурация AppCmd ​​Migrate и ошибка HTTP 500.22 .

Вы показали нам свой- но у вас есть что-нибудь под/ или/ ?Это может быть причиной.В интегрированном режиме IIS7 эти подразделы должны находиться подскорее, чем.

Когда вы удаляете все внутриВы удаляете эту строку:

<validation validateIntegratedModeConfiguration="false"/>

, которая говорит IIS не проверять, работает ли конфигурация в интегрированном режиме.(Этот пропуск проверки допустим, если пул приложений действительно работает в классическом режиме.)

Когда этот элемент, говорящий о пропуске проверки, удаляется, IIS пытается убедиться, что конфигурация действительна для режима интегрированного конвейера.Это не удастся, если у вас есть HTTP-модули или HTTP-обработчики под старымэлемент.Они должны быть перемещены в,Вы можете сделать это вручную или использовать команду «appcmd migrate config», которая обновит ваш web.config для вас.

Чтобы перенести web.config в корень сайта IIS,Запустите appcmd migrate config следующим образом (обратите внимание на косую черту):

appcmd migrate config "Your Site Name/"

Чтобы перенести файл web.config для приложения под корнем сайта, сделайте следующее:

appcmd migrate config "Your Site Name/Your App Name"

Как толькоизменив ваш web.config, вы должны зафиксировать внесенные изменения в вашей контролируемой источником копии web.config.В противном случае изменения будут отменены, если вы повторно развернете свой файл web.config из системы контроля версий.

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