У меня есть сайт 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-страницу. Почему это не работает с предварительно скомпилированным кодом по сравнению с моей не скомпилированной версией на моем локальном компьютере?