Ich habe gerade mein Projekt auf meinem Host auf Arvixe veröffentlicht und erhalte diesen Fehler (funktioniert gut lokal):
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
Was heißt das ?
c#
asp.net-mvc
iis
asp.net-mvc-4
BjarkeCK
quelle
quelle
BundleConfig.RegisterBundles
Anruf vonApplication_Start
My +1 und geht stattdessen zur Antwort von @ user2465004.Ich hatte das gleiche Problem und es war kein Codeproblem. Ich habe die Veröffentlichungsoption verwendet (nicht die FTP-Option) und Visual Studio hat einige meiner Skripte / CSS nicht auf den Azure-Server hochgeladen, da sie nicht "in meinem Projekt enthalten" waren. Lokal funktionierte es also einwandfrei, da sich Dateien auf meiner Festplatte befanden. In meinem Fall wurde dieses Problem durch "Projekt> Alle Dateien anzeigen ..." gelöst. Klicken Sie mit der rechten Maustaste auf die nicht enthaltenen Dateien, fügen Sie sie ein und veröffentlichen Sie sie erneut
quelle
Hier ist eine kurze Klasse, die ich geschrieben habe, um dies zu vereinfachen.
Um es zu verwenden, ersetzen Sie einfach ScriptBundle durch BundleRelaxed in Ihrem Code, wie in:
quelle
HostingEnvironment.MapPath
nicht berücksichtigtBundleTable.VirtualPathProvider
werden ( möglicherweise nicht standardmäßig und nichtHostingEnvironment.VirtualPathProvider
). In diesem Fall möchten Sie das obige Beispiel inBundleTable.VirtualPathProvider.DirectoryExists
und konvertierenBundleTable.VirtualPathProvider.GetDirectory
. Die Suche nach Dateimustern wird etwas problematischer, aber ein guter Ausgangspunkt.Ich bin heute auf dasselbe Problem gestoßen. Tatsächlich habe ich festgestellt, dass einige Dateien unter ~ / Scripts nicht veröffentlicht wurden. Das Problem ist behoben, nachdem ich die fehlenden Dateien veröffentlicht habe
quelle
Ich habe diesen Fehler auch dadurch erhalten, dass meine Datei bundles.config nicht vorhandene Verzeichnisse enthält. Ändern Sie dies:
Dazu:
Löse das Problem für mich.
quelle
Wie bei @JerSchneid bestand mein Problem in leeren Verzeichnissen, aber mein Bereitstellungsprozess unterschied sich vom OP. Ich habe eine git-basierte Bereitstellung auf Azure (das Kudu verwendet) durchgeführt und nicht bemerkt, dass git keine leeren Verzeichnisse im Repo enthält. Sehen https://stackoverflow.com/a/115992/1876622
Meine lokale Ordnerstruktur war also:
Während beim Klonen / Ziehen meines Repositorys auf dem Remote-Server das leere Verzeichnis nicht angezeigt wurde:
Der beste Ansatz, um dies zu beheben, besteht darin, eine .keep-Datei im leeren Verzeichnis zu erstellen. Siehe diese SO-Lösung: https://stackoverflow.com/a/21422128/1876622
quelle
Ich hatte das gleiche Problem. Das Problem in meinem Fall war, dass sich der Ordner des Skripts mit allen Bootstrap / JQueries-Skripten nicht im Ordner wwwroot befand. Nachdem ich den Ordner des Skripts zu wwwroot hinzugefügt hatte, verschwand der Fehler.
quelle
Dies kann auch durch eine Racebedingung während der Bereitstellung verursacht werden:
Wenn Sie "Veröffentlichen" von Visual Studio zum Bereitstellen über eine Netzwerkdateifreigabe verwenden und "Alle vorhandenen Dateien vor dem Veröffentlichen löschen" aktivieren. (Ich mache das manchmal, um sicherzustellen, dass wir nicht unwissentlich immer noch von Dateien abhängig sind, die aus dem Projekt entfernt wurden, aber immer noch auf dem Server hängen.)
Wenn jemand die Site besucht, bevor alle erforderlichen JS / CSS-Dateien erneut bereitgestellt wurden, wird sie gestartet
Application_Start
undRegisterBundles
die Bundles können nicht ordnungsgemäß erstellt und diese Ausnahme ausgelöst werden.Aber bis Sie diese Ausnahme erhalten und den Server überprüfen, sind alle erforderlichen Dateien genau dort, wo sie sein sollten!
Die Anwendung bedient die Site jedoch weiterhin gerne und generiert 404 für jede Bundle-Anforderung sowie die daraus resultierenden nicht gestalteten / nicht funktionierenden Seiten. Sie versucht auch dann nicht, die Bundles neu zu erstellen, wenn die erforderlichen JS / CSS-Dateien jetzt verfügbar sind.
Bei einer erneuten Bereitstellung mit "Übereinstimmende Dateien durch lokale Kopien ersetzen" wird die App dieses Mal neu gestartet und die Bundles ordnungsgemäß registriert.
quelle
Dies kann ein altes Problem sein. Ich habe einen ähnlichen Fehler und in meinem Fall war es der Skriptordner, der in meinem Modellordner versteckt war. Die Stapelverfolgung gibt eindeutig an, dass das Verzeichnis fehlt, und standardmäßig sollten sich alle Java-Skripte im Skriptordner befinden. Dies gilt möglicherweise nicht für die oben genannten Benutzer.
quelle
Ich hatte eine neue
Angular
Anwendung erstellt und geschriebenIch hatte jedoch no erstellt
services
, sodass derservices
Ordner beim Veröffentlichen nicht bereitgestellt wurde, da er leer war. Leider müssen Sie eine Dummy-Datei in einen leeren Ordner legen, damit sie veröffentlicht werden kannhttps://blogs.msdn.microsoft.com/webdevelopertips/2010/04/29/tip-105-did-you-know-how-to-include-empty-directory-when-package-a-web-application/
quelle
Auch ich stand vor dem gleichen Problem. Durchsuchte den Dateipfad unter Skriptordner. Kopierte den genauen Dateinamen und nahm Änderungen in bundle.cs vor:
Alter Code: //Bundle.cs
Neuer Code :
quelle
Ich hatte dieses Problem, als ich ein VS2017-Projekt in VS2015 öffnete, die Lösung erstellte und dann die DLLs hochlud.
Das Problem wurde behoben, indem es in VS2017 neu erstellt und die DLLs erneut hochgeladen wurden.
quelle
Ich habe die gleiche Frage! Es scheint mit IIS Express. Ich ändere die URL von IIS Express für Project Like:
dann ist das problem weg.
quelle
Mein Problem war, dass meine Site keine zu bündelnden Dateien hatte. Ich hatte die Site jedoch mit einer MVC-Vorlage erstellt, die jQuery-Skripte enthält. Die bundle.config verwies auf diese Dateien und ihre Ordner. Ich brauchte die Skripte nicht und löschte sie. Nach dem Bearbeiten der bundle.config war alles in Ordnung.
quelle
Alles funktionierte einwandfrei, während beim Vornehmen nicht verwandter Änderungen und beim nächsten Build das gleiche Problem auftrat. Verwendete die Quellcodeverwaltung, um sie mit früheren Versionen zu vergleichen, und stellte fest, dass mein Ordner ../Content/Scripts auf mysteriöse Weise geleert wurde!
Wiederhergestellt ../Content/Scripts/*.*von einem Backup und alles hat gut funktioniert!
ps: Mit VS2012 hatte MVC4 kürzlich einige NuGet-Pakete aktualisiert, sodass dies möglicherweise eine Rolle bei dem Problem gespielt hat, aber nach dem Update lief alles eine Weile gut, daher nicht sicher.
quelle
Suchen Sie in Ihrer BundleConfig.cs-Datei nach den Zeilen, die IncludeDirectory () aufrufen.
dh:
Mein Grid-Verzeichnis existierte nicht.
quelle
Ich hatte auch diesen Fehler, als ich alle meine getrennten Bündel zu einem Bündel kombinierte.
Gewechselt zu
Ich musste den Anwendungspool im Control Panel meines Shared Hosting aktualisieren, um dieses Problem zu beheben.
quelle
Das Entfernen dieser Codezeilen aus der Klassendatei bundleConfig.cs löste meine Herausforderung:
quelle
Keine dieser Antworten hat mir geholfen, da ich meine
jsx
Dateien auf seltsame Weise erstellt habe. Mein Code funktionierte im localhost-Modus, schlug jedoch in der Produktion fehl.Die Lösung für mich bestand darin, in die
csproj
Datei zu gehen und die Dateipfade von<None ...
nach zu ändern<Content ...
quelle
Grundsätzlich gibt Ihnen die Stapelverfolgung genau den Ort (wie im Screenshot hervorgehoben), an dem Sie nicht vorhandene Ressourcen entfernen müssen.
quelle