Виртуальный каталог на предварительно скомпилированном сайте не может размещать файлы html

У меня есть сайт msdeployed, который будет содержать виртуальный каталог с отдельной папкой содержимого. когда я размещаю непредварительно скомпилированный (т.е. мой веб-сайт хостинга IIS указывает на каталог моего проекта в Visual Studio).

На моем локальном компьютере я могу перенаправить на html-страницу в виртуальном каталоге, и html-страница отображается правильно. НО, когда я развертываю проект на нашем промежуточном сервере, я получаю следующую ошибку:

The file '/MedrioWeb/help/info/default.html' has not been pre-compiled, and cannot be requested. 
   at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
   at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
   at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound)
   at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp)
   at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
   at System.Web.UI.PageHandlerFactory.GetHandler(HttpContext context, String requestType, String virtualPath, String path)
   at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)   

В основном, предварительно скомпилированном веб-приложении в IIS я добавил следующие расширения в компиляцию\buildProviders:

<!-- forcing authentication for html pages -->
<add extension=".html" type="System.Web.Compilation.PageBuildProvider" />
<add extension=".htm" type="System.Web.Compilation.PageBuildProvider" />

Далее у меня есть файл web.config в виртуальном каталоге веб-приложения:

<?xml version="1.0"?>
<configuration>
    <system.web>

    </system.web>
  <system.webServer>
    <handlers>
         <add name="HTML" path="*.html" verb="GET, HEAD, POST, DEBUG"   type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" />
         <add name="HTM" path="*.htm" verb="GET, HEAD, POST, DEBUG" type="System.Web.UI.PageHandlerFactory" resourceType="Unspecified" requireAccess="Script" />
     </handlers>
  </system.webServer>
</configuration>

TL;DR: я получаю предварительно скомпилированную ошибку для типа файла, отличного от asp.net. Я включаю расширение только для того, чтобы мой пользовательский модуль проверки подлинности формы использовался для проверки того, что пользователь вошел в систему, чтобы увидеть html-страницу. Почему это не работает с предварительно скомпилированным кодом по сравнению с моей не скомпилированной версией на моем локальном компьютере?


person Nathan Tregillus    schedule 06.05.2014    source источник
comment
Это сейчас низкоприоритетно, я просто убрал задачу в msbuild для прекомпиляции сайта.   -  person Nathan Tregillus    schedule 08.05.2014


Ответы (1)


Хорошо, без кусачек?

В итоге я удалил задачу предварительной компиляции наших сборок.

person Nathan Tregillus    schedule 08.05.2014