У меня есть сайт iis, на котором размещено несколько веб-приложений ASP.NET. Я наблюдаю спорадическую проблему, когда некоторые веб-приложения возвращают следующую ошибку сервера (отображается во внешнем интерфейсе/браузере и регистрируется как предупреждение в средстве просмотра событий веб-сервера).
Exception type: InvalidOperationException
Exception message: Failed to map the path '/MyWebApp1/Scripts/App/Controllers/'.
at System.Web.Configuration.ProcessHostConfigUtils.MapPathActual(String siteName, VirtualPath path)
at System.Web.Configuration.ProcessHostServerConfig.System.Web.Configuration.IServerConfig.MapPath(IApplicationHost appHost, VirtualPath path)
at System.Web.Hosting.MapPathBasedVirtualPathEnumerator..ctor(VirtualPath virtualPath, RequestedEntryType requestedEntryType)
at System.Web.Hosting.MapPathBasedVirtualPathCollection.System.Collections.IEnumerable.GetEnumerator()
at System.Linq.Enumerable.d__97`1.MoveNext()
at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
at System.Linq.OrderedEnumerable`1.d__1.MoveNext()
at System.Web.Optimization.BundleDirectoryItem.ProcessDirectory(BundleContext context, String directoryVirtualPath, VirtualDirectory dirInfo, List`1 files)
at System.Web.Optimization.BundleDirectoryItem.AddFiles(List`1 files, BundleContext context)
at System.Web.Optimization.Bundle.EnumerateFiles(BundleContext context)
at System.Web.Optimization.Bundle.GenerateBundleResponse(BundleContext context)
at System.Web.Optimization.Bundle.GetBundleResponse(BundleContext context)
at System.Web.Optimization.BundleResolver.GetBundleContents(String virtualPath)
at System.Web.Optimization.AssetManager.EliminateDuplicatesAndResolveUrls(IEnumerable`1 refs)
at System.Web.Optimization.AssetManager.RenderExplicit(String tagFormat, String[] paths)
at ASP._Page_Views_Shared__Layout_cshtml.Execute() in C:\Websites\MySite\MyWebApp1\Views\Shared\_Layout.cshtml:line 21
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
at System.Web.WebPages.WebPageExecutingBase.WriteTo(TextWriter writer, HelperResult content)
at System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action`1 body)
at System.Web.WebPages.WebPageBase.PopContext()
at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.c__DisplayClass21.b__1e(IAsyncResult asyncResult)
at System.Web.Mvc.Controller.b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag)
at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag)
at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
at System.Web.Mvc.MvcHandler.b__5(IAsyncResult asyncResult, ProcessRequestState innerState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Этот первоначальный запрос, который не удался, предназначен для получения веб-контента для приложения. В это приложение встроен и минимизирован js. Похоже, что код в трассировке стека извлекает отдельные js-файлы из пакета и пытается сопоставить их виртуальные пути с реальными физическими путями, но не может этого сделать.
Проблема произошло уже дважды для двух разных веб-приложений на одном сайте. Но с другими веб-приложениями на том же сайте этого не произошло. Как только это произошло, единственным способом устранить проблему была перезапуск пула приложений и обновление кэша.
Мне не удалось воспроизвести проблему, и она кажется спорадическим.
Похоже, нет ничего особенного или уникального в разрешениях папок для пулов приложений, в которых возникла проблема, по сравнению с теми, у которых ее не было.
li>
Я не делал ничего, чтобы переименовать сайт или изменить его физические/виртуальные пути.
Существующие темы, которые я видел по этой ошибке, похоже, предполагают либо проблемы с разрешениями, либо несоответствие имен каталогов, но спорадический характер эта проблема, кажется, говорит об обратном.
Из рассмотрения https://referencesource.microsoft.com/# ... references, похоже, что-то не так в MgdMapPathDirect из webengine4.dll. Но я уверен, что есть какой-нибудь способ записать/зафиксировать, что происходит в этой сборке.
Есть ли у кого-нибудь еще идеи?
У меня есть сайт iis, на котором размещено несколько веб-приложений ASP.NET. Я наблюдаю спорадическую проблему, когда некоторые веб-приложения возвращают следующую ошибку сервера (отображается во внешнем интерфейсе/браузере и регистрируется как предупреждение в средстве просмотра событий веб-сервера). [code]Exception type: InvalidOperationException Exception message: Failed to map the path '/MyWebApp1/Scripts/App/Controllers/'. at System.Web.Configuration.ProcessHostConfigUtils.MapPathActual(String siteName, VirtualPath path) at System.Web.Configuration.ProcessHostServerConfig.System.Web.Configuration.IServerConfig.MapPath(IApplicationHost appHost, VirtualPath path) at System.Web.Hosting.MapPathBasedVirtualPathEnumerator..ctor(VirtualPath virtualPath, RequestedEntryType requestedEntryType) at System.Web.Hosting.MapPathBasedVirtualPathCollection.System.Collections.IEnumerable.GetEnumerator() at System.Linq.Enumerable.d__97`1.MoveNext() at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() at System.Linq.Buffer`1..ctor(IEnumerable`1 source) at System.Linq.OrderedEnumerable`1.d__1.MoveNext() at System.Web.Optimization.BundleDirectoryItem.ProcessDirectory(BundleContext context, String directoryVirtualPath, VirtualDirectory dirInfo, List`1 files) at System.Web.Optimization.BundleDirectoryItem.AddFiles(List`1 files, BundleContext context) at System.Web.Optimization.Bundle.EnumerateFiles(BundleContext context) at System.Web.Optimization.Bundle.GenerateBundleResponse(BundleContext context) at System.Web.Optimization.Bundle.GetBundleResponse(BundleContext context) at System.Web.Optimization.BundleResolver.GetBundleContents(String virtualPath) at System.Web.Optimization.AssetManager.EliminateDuplicatesAndResolveUrls(IEnumerable`1 refs) at System.Web.Optimization.AssetManager.RenderExplicit(String tagFormat, String[] paths) at ASP._Page_Views_Shared__Layout_cshtml.Execute() in C:\Websites\MySite\MyWebApp1\Views\Shared\_Layout.cshtml:line 21 at System.Web.WebPages.WebPageBase.ExecutePageHierarchy() at System.Web.Mvc.WebViewPage.ExecutePageHierarchy() at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) at System.Web.WebPages.WebPageExecutingBase.WriteTo(TextWriter writer, HelperResult content) at System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action`1 body) at System.Web.WebPages.WebPageBase.PopContext() at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) at System.Web.Mvc.Async.AsyncControllerActionInvoker.c__DisplayClass21.b__1e(IAsyncResult asyncResult) at System.Web.Mvc.Controller.b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) at System.Web.Mvc.MvcHandler.b__5(IAsyncResult asyncResult, ProcessRequestState innerState) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.End(IAsyncResult asyncResult, Object tag) at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) [/code] Этот первоначальный запрос, который не удался, предназначен для получения веб-контента для приложения. В это приложение встроен и минимизирован js. Похоже, что код в трассировке стека извлекает отдельные js-файлы из пакета и пытается сопоставить их виртуальные пути с реальными физическими путями, но не может этого сделать. Проблема произошло уже дважды для двух разных веб-приложений на одном сайте. Но с другими веб-приложениями на том же сайте этого не произошло. Как только это произошло, единственным способом устранить проблему была перезапуск пула приложений и обновление кэша. [list] [*]Мне не удалось воспроизвести проблему, и она кажется спорадическим. [*]Похоже, нет ничего особенного или уникального в разрешениях папок для пулов приложений, в которых возникла проблема, по сравнению с теми, у которых ее не было. [*] li> Я не делал ничего, чтобы переименовать сайт или изменить его физические/виртуальные пути. [/list] Существующие темы, которые я видел по этой ошибке, похоже, предполагают либо проблемы с разрешениями, либо несоответствие имен каталогов, но спорадический характер эта проблема, кажется, говорит об обратном. Из рассмотрения https://referencesource.microsoft.com/#System.Web/Configuration/ProcessHostConfigUtils.cs,3335ae12f0c53562,references, похоже, что-то не так в MgdMapPathDirect из webengine4.dll. Но я уверен, что есть какой-нибудь способ записать/зафиксировать, что происходит в этой сборке. Есть ли у кого-нибудь еще идеи?