Acabei de publicar meu projeto para meu host na Arvixe e recebo este erro (funciona bem localmente):
Server Error in '/' Application.
Directory does not exist.
Parameter name: directoryVirtualPath
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentException: Directory does not exist.
Parameter name: directoryVirtualPath
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[ArgumentException: Directory does not exist.
Parameter name: directoryVirtualPath]
System.Web.Optimization.Bundle.IncludeDirectory(String directoryVirtualPath, String searchPattern, Boolean searchSubdirectories) +357
System.Web.Optimization.Bundle.Include(String[] virtualPaths) +287
IconBench.BundleConfig.RegisterBundles(BundleCollection bundles) +75
IconBench.MvcApplication.Application_Start() +128
[HttpException (0x80004005): Directory does not exist.
Parameter name: directoryVirtualPath]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9160125
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +131
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +194
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +339
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +253
[HttpException (0x80004005): Directory does not exist.
Parameter name: directoryVirtualPath]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9079228
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +97
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +256
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.237
O que isso significa ?
c#
asp.net-mvc
iis
asp.net-mvc-4
BjarkeCK
fonte
fonte
BundleConfig.RegisterBundles
chamada deApplication_Start
Meu +1 que vai para a resposta de @ user2465004.Eu tive esse mesmo problema e não era um problema de código. Eu estava usando a opção de publicação (não a de FTP) e o Visual Studio não estava carregando alguns dos meus scripts / css para o servidor azure porque eles não foram "incluídos no meu projeto". Então, localmente funcionou bem, porque os arquivos estavam lá no meu disco rígido. O que resolveu esse problema no meu caso foi "Projeto> Mostrar todos os arquivos ..." e clique com o botão direito nos que não foram incluídos, inclua-os e publique novamente
fonte
Aqui está uma aula rápida que escrevi para tornar isso mais fácil.
Para usá-lo, basta substituir ScriptBundle por BundleRelaxed em seu código, como em:
fonte
HostingEnvironment.MapPath
não leva em consideração asBundleTable.VirtualPathProvider
extensões que você pode estar usando ( pode ser não padrão ou nãoHostingEnvironment.VirtualPathProvider
). Nesse caso, você deseja converter o exemplo acima para usarBundleTable.VirtualPathProvider.DirectoryExists
eBundleTable.VirtualPathProvider.GetDirectory
. As pesquisas de padrão de arquivo se tornam um pouco mais problemáticas, mas é um bom lugar para começar.Encontrei o mesmo problema hoje; na verdade, descobri que alguns arquivos em ~ / Scripts não foram publicados. O problema foi resolvido depois que publiquei os arquivos ausentes
fonte
Também recebi esse erro por ter diretórios inexistentes em meu arquivo bundles.config. Mudando isso:
Para isso:
Resolva o problema para mim.
fonte
Como @JerSchneid, meu problema eram diretórios vazios, mas meu processo de implantação era diferente do OP. Eu estava fazendo uma implantação baseada em git no Azure (que usa Kudu) e não percebi que o git não inclui diretórios vazios no repo. Vejo https://stackoverflow.com/a/115992/1876622
Portanto, minha estrutura de pasta local era:
Considerando que qualquer clone / pull do meu repositório no servidor remoto não estava obtendo o referido diretório vazio:
A melhor abordagem para corrigir isso é criar um arquivo .keep no diretório vazio. Veja esta solução SO: https://stackoverflow.com/a/21422128/1876622
fonte
Eu tive o mesmo problema. o problema no meu caso era que a pasta do script com todos os scripts bootstrap / jqueries não estava na pasta wwwroot. depois de adicionar a pasta do script ao wwwroot, o erro desapareceu.
fonte
Isso também pode ser causado por uma condição de corrida durante a implantação:
Se você usar "Publicar" do Visual Studio para implantar em um compartilhamento de arquivo de rede, marque "Excluir todos os arquivos existentes antes de publicar". (Eu faço isso às vezes para garantir que não estejamos ainda dependendo de arquivos que foram removidos do projeto, mas ainda estão pendurados no servidor.)
Se alguém acessar o site antes que todos os arquivos JS / CSS necessários sejam reimplantados, ele será iniciado
Application_Start
eRegisterBundles
não conseguirá construir os pacotes corretamente e lançar essa exceção.Mas quando você obtiver essa exceção e for verificar o servidor, todos os arquivos necessários estarão exatamente onde deveriam estar!
No entanto, o aplicativo felizmente continua a servir o site, gerando 404's para qualquer solicitação de pacote, junto com as páginas não estilizadas / não funcionais que resultam disso, e nunca tenta reconstruir os pacotes, mesmo depois que os arquivos JS / CSS necessários estão agora disponíveis.
Uma nova implantação usando "Substituir arquivos correspondentes por cópias locais" fará com que o aplicativo reinicie e registre corretamente os pacotes desta vez.
fonte
Este pode ser um problema antigo. Eu tenho um erro semelhante e, no meu caso, era a pasta Scripts escondida na minha pasta Modelos. O rastreamento de pilha diz claramente que seu diretório está faltando e, por padrão, todos os scripts Java devem estar na pasta Scripts. Isso pode não ser aplicável aos usuários acima.
fonte
Eu tinha criado um novo
Angular
aplicativo e escritomas eu tinha criado não
services
, então aservices
pasta não foi implantada na publicação porque estava vazia. Infelizmente, você tem que colocar um arquivo fictício dentro de qualquer pasta vazia para que seja publicadohttps://blogs.msdn.microsoft.com/webdevelopertips/2010/04/29/tip-105-did-you-know-how-to-include-empty-directory-when-package-a-web-application/
fonte
Eu também enfrentei o mesmo problema. Navegou até o caminho do arquivo na pasta de script. Copiou o nome exato do arquivo e fez a alteração em bundle.cs:
Código antigo: //Bundle.cs
Novo Código :
fonte
Tive esse problema quando abri um projeto VS2017 no VS2015, construí a solução e carreguei as DLLs.
Reconstruí-lo no VS2017 e reenviar as DLLs corrigiu o problema.
fonte
Eu tenho a mesma pergunta! Parece que com o IIS Express. Eu mudo o URL do IIS Express para Projeto como:
então o problema desapareceu.
fonte
Meu problema era que meu site não tinha arquivos para agrupar. No entanto, criei o site com um modelo MVC, que inclui scripts jQuery. O bundle.config referia-se a esses arquivos e suas pastas. Sem precisar dos scripts, eu os apaguei. Depois de editar o bundle.config, tudo estava bem.
fonte
Tudo estava funcionando bem, então ao fazer alterações não relacionadas e na próxima compilação encontrei o mesmo problema. Usei o controle de origem para comparar com versões anteriores e descobri que minha pasta ../Content/Scripts foi misteriosamente esvaziada!
Restaurado ../Content/Scripts/*.* de um backup e tudo funcionou bem!
ps: usando VS2012, MVC4, recentemente atualizou alguns pacotes NuGet, então isso pode ter desempenhado algum papel no problema, mas tudo funcionou bem por um tempo após a atualização, então não tenho certeza.
fonte
procure em seu arquivo BundleConfig.cs as linhas que invocam IncludeDirectory ()
ie:
meu diretório Grid não existia.
fonte
Eu também tive esse erro quando combinei todos os meus pacotes separados em um pacote.
Mudou para
Tive que atualizar o pool de aplicativos no painel de controle da minha hospedagem compartilhada para corrigir esse problema.
fonte
Remover essas linhas de código do arquivo de classe bundleConfig.cs resolveu meu desafio:
fonte
Nenhuma dessas respostas me ajudou, já que criei meus
jsx
arquivos de uma forma estranha. Meu código estava funcionando no modo localhost, mas falhou na produção.A correção para mim foi acessar o
csproj
arquivo e alterar os caminhos de arquivo de<None ...
para<Content ...
fonte
Basicamente, o rastreamento de pilha fornece o local exato (conforme destacado na captura de tela) de que você precisa para remover recursos inexistentes.
fonte