Как предварительно скомпилировать MVC для интрасети?

VS2013 Update3, .Net 4.5, MVC, IIS 7

Я создал новый проект mvc. Проверено от VS, и это работает. Из ИИ я создал папку в wwwroot и сделал ее приложением. Добавьте пул приложений с .net 4.0. Включена проверка подлинности Windows и отключена анонимная проверка подлинности. Установите учетную запись службы в пуле приложений и веб-приложении. Из VS я развертываю в IIS с настройками по умолчанию (которые НЕ предварительно компилируются) (используя файловую систему). Сайт отлично работает в IIS. Но… Если развернуть с нажатой настройкой прекомпиляции. Веб-сайт не работает с ошибкой 403. Пробовал различные комбинации и никогда не получал предварительно скомпилированную работу. Всегда работает, если не предварительно скомпилирован.

ASP.NET 4 был зарегистрирован в IIS. Пробные модули runAllManagedModulesForAllRequests="true" не увенчались успехом.

У меня закончились идеи, и я ищу помощи

Server Error in Application "xxx/MVCHELLOWORLD"

Internet Information Services 7.5



Error Summary 
HTTP Error 403.14 - Forbidden

The Web server is configured to not list the contents of this directory.


Detailed Error Information 


Module
DirectoryListingModule 

Notification
ExecuteRequestHandler 

Handler
StaticFile 

Error Code
0x00000000 



Requested URL
http://xxx/MvcHelloWorld/ 

Physical Path
C:\inetpub\wwwroot\MvcHelloWorld\ 

Logon Method
Negotiate 



Most likely causes: •A default document is not configured for the requested URL, and directory browsing is not enabled on the server.


Things you can try: •If you do not want to enable directory browsing, ensure that a default document is configured and that the file exists.
• Enable directory browsing using IIS Manager. 1.Open IIS Manager.
2.In the Features view, double-click Directory Browsing.
3.On the Directory Browsing page, in the Actions pane, click Enable.

•Verify that the configuration/system.webServer/directoryBrowse@enabled attribute is set to true in the site or application configuration file.


Links and More InformationThis error occurs when a document is not specified in the URL, no default document is specified for the Web site or application, and directory listing is not enabled for the Web site or application. This setting may be disabled on purpose to secure the contents of the server. 
View more information »

person RitchieD    schedule 17.09.2014    source источник
comment
Ошибка 403 слишком общая. Найдите реальную ошибку.   -  person CodeCaster    schedule 18.09.2014
comment
Я согласен, но это ошибка.   -  person RitchieD    schedule 18.09.2014
comment
возможный дубликат ASP.NET MVC в IIS 7.5   -  person CodeCaster    schedule 18.09.2014
comment
Я сделал много поисков, и я не нашел ни одного, где прекомпиляция является фактором. Большинство запросов типа 1741439 дают 403 даже без предварительной компиляции. Если это дубликат, мне очень хотелось бы знать, что это за дубликат.   -  person RitchieD    schedule 18.09.2014
comment
Вы публикуете из визуальной студии?   -  person mxmissile    schedule 19.09.2014
comment
В вашем описании говорится, что проект создан с использованием .net 4.5 и что пул приложений IIS использует .net 4.0. Это ошибка? иначе это твои проблемы   -  person Stuart    schedule 19.09.2014
comment
Да, я публикую из VS.   -  person RitchieD    schedule 19.09.2014
comment
Насколько я понимаю, пул приложений IIS имеет версию 2.0 или 4.0, а пул приложений 4.0 работает с .net 4.5.   -  person RitchieD    schedule 19.09.2014


Ответы (1)


У меня была такая же проблема, и я пытался решить ее в течение последних нескольких дней.

У меня есть компьютер с Windows 8, на котором работает IIS 8 Express.

Я скопировал сайт MVC, который был скомпилирован и опубликован с другого компьютера, запустил его и получил тот же запрет 403.14, что и выше. Затем я попытался опубликовать сайт в нескомпилированном виде и запустить его, и сайт загрузился просто отлично.

Затем я решил загрузить Visual Web Express на ПК с Windows 8, создал фиктивный сайт MVC и запустил его в компилированном и декомпилированном виде, и он работал нормально. Это показало мне, что IIS 8 Express настроен и работает правильно, и должна быть какая-то проблема с компиляцией сайта.

Я пробовал разные методы предварительной компиляции во время публикации, в том числе не объединять, объединять все и объединять каждую папку, но ни один из них не отличался.

В конце концов я решил эту проблему, изменив свойство Copy Local на true для каждой сборки, на которую ссылается проект. Даже все стандартные, на которые следует ссылаться из GAC.

Не уверен, нужно ли мне копировать каждую сборку в папку bin или нет, но, учитывая большое количество сборок, на которые есть ссылки в моем проекте, это казалось проще, чем пытаться их 1 за 1.

РЕДАКТИРОВАТЬ: Внес некоторые изменения и переиздал сайт, и теперь я снова вернулся к запрещенному 403.14 :(

Я действительно ломаю голову над этим, почему это не работает.

person JustinC    schedule 24.10.2014