Właśnie opublikowałem swój projekt dla mojego hosta w Arvixe i otrzymałem ten błąd (działa dobrze lokalnie):
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
Co to znaczy ?
c#
asp.net-mvc
iis
asp.net-mvc-4
BjarkeCK
źródło
źródło
BundleConfig.RegisterBundles
wywołania zApplication_Start
My +1, zamiast tego przechodzi do odpowiedzi @ user2465004.Miałem ten sam problem i nie był to problem z kodem. Używałem opcji publikowania (nie FTP), a program Visual Studio nie przekazywał niektórych moich skryptów / CSS na serwer Azure, ponieważ nie zostały one „uwzględnione w moim projekcie”. Tak więc lokalnie działało dobrze, ponieważ pliki były na moim dysku twardym. Rozwiązaniem tego problemu w moim przypadku było „Projekt> Pokaż wszystkie pliki ...” i kliknij prawym przyciskiem myszy te, które nie zostały uwzględnione, dołącz je i opublikuj ponownie
źródło
Oto krótka klasa, którą napisałem, aby to ułatwić.
Aby z niego skorzystać, po prostu zamień ScriptBundle na BundleRelaxed w swoim kodzie, jak w:
źródło
HostingEnvironment.MapPath
że nie bierze pod uwagęBundleTable.VirtualPathProvider
rozszerzeń, których możesz używać ( może być inne niż domyślne i nieHostingEnvironment.VirtualPathProvider
). W tym przypadku chciałbyś przekonwertować powyższy przykład na użycieBundleTable.VirtualPathProvider.DirectoryExists
iBundleTable.VirtualPathProvider.GetDirectory
. Wyszukiwanie wzorców plików staje się nieco bardziej problematyczne, ale jest dobrym miejscem do rozpoczęcia.Dzisiaj natknąłem się na ten sam problem. W rzeczywistości okazało się, że niektóre pliki w katalogu ~ / Scripts nie są publikowane. Problem został rozwiązany po opublikowaniu brakujących plików
źródło
Otrzymałem również ten błąd, ponieważ w moim pliku bundles.config nie istnieją katalogi. Zmiana tego:
Do tego:
Rozwiąż problem za mnie.
źródło
Podobnie jak @JerSchneid, moim problemem były puste katalogi, ale mój proces wdrażania był inny niż OP. Robiłem wdrażanie oparte na git na platformie Azure (która używa Kudu) i nie zdawałem sobie sprawy, że git nie zawiera pustych katalogów w repozytorium. Zobacz https://stackoverflow.com/a/115992/1876622
Więc moja struktura folderów lokalnych była następująca:
Podczas gdy jakiekolwiek klonowanie / ściąganie mojego repozytorium na zdalnym serwerze nie otrzymywało pustego katalogu:
Najlepszym sposobem rozwiązania tego problemu jest utworzenie pliku .keep w pustym katalogu. Zobacz to rozwiązanie SO: https://stackoverflow.com/a/21422128/1876622
źródło
Miałem ten sam problem. problem w moim przypadku polegał na tym, że folder skryptu ze wszystkimi skryptami bootstrap / jqueries nie znajdował się w folderze wwwroot. po dodaniu folderu skryptu do wwwroot błąd zniknął.
źródło
Może to być również spowodowane sytuacją wyścigu podczas wdrażania:
Jeśli używasz funkcji „Publikuj” programu Visual Studio do wdrażania za pośrednictwem udziału plików w sieci i zaznacz opcję „Usuń wszystkie istniejące pliki przed opublikowaniem”. (Robię to czasami, aby upewnić się, że nie jesteśmy nieświadomie nadal zależni od plików, które zostały usunięte z projektu, ale nadal wiszą na serwerze).
Jeśli ktoś wejdzie na stronę, zanim wszystkie wymagane pliki JS / CSS zostaną ponownie wdrożone, uruchomi się
Application_Start
iRegisterBundles
nie uda się poprawnie skonstruować pakietów i wyrzucić ten wyjątek.Ale zanim uzyskasz ten wyjątek i przejdziesz do sprawdzenia serwera, wszystkie niezbędne pliki są tam, gdzie powinny!
Jednak aplikacja szczęśliwie nadal obsługuje witrynę, generując błędy 404 dla każdego żądania pakietu, wraz z niestylizowanymi / niefunkcjonalnymi stronami, które z tego wynikają, i nigdy nie próbuje odbudować pakietów, nawet gdy niezbędne pliki JS / CSS są już dostępne.
Ponowne wdrożenie przy użyciu opcji „Zastąp pasujące pliki kopiami lokalnymi” spowoduje ponowne uruchomienie aplikacji i tym razem prawidłowe zarejestrowanie pakietów.
źródło
To może być stary problem, mam podobny błąd iw moim przypadku był to folder Scripts, który ukrywał się w folderze moich modeli. Śledzenie stosu wyraźnie wskazuje na brakujący katalog i domyślnie wszystkie skrypty Java powinny znajdować się w folderze skryptów. Może to nie dotyczyć powyższych użytkowników.
źródło
Stworzyłem nową
Angular
aplikację i napisałemale utworzyłem „nie”
services
, więcservices
folder nie został wdrożony podczas publikowania, ponieważ był pusty. Niestety, musisz umieścić fałszywy plik w dowolnym pustym folderze, aby mógł zostać opublikowanyhttps://blogs.msdn.microsoft.com/webdevelopertips/2010/04/29/tip-105-did-you-know-how-to-include-empty-directory-when-package-a-web-application/
źródło
Ja też stanąłem przed tym samym problemem. Przeszedłem do ścieżki do pliku w folderze skryptów, skopiowałem dokładną nazwę pliku i dokonałem zmiany w bundle.cs:
Stary kod: //Bundle.cs
Nowy kod :
źródło
Miałem ten problem, kiedy otworzyłem projekt VS2017 w VS2015, zbudowałem rozwiązanie, a następnie załadowałem biblioteki DLL.
Odbudowanie go w VS2017 i ponowne przesłanie bibliotek DLL rozwiązało problem.
źródło
Mam to samo pytanie! Wydaje się, że tak jest w przypadku IIS Express. Zmieniam adres URL programu IIS Express dla projektu, takiego jak:
wtedy problem zniknął.
źródło
Mój problem polegał na tym, że moja witryna nie miała plików do spakowania. Jednak utworzyłem witrynę z szablonem MVC, który zawiera skrypty jQuery. Plik bundle.config odwoływał się do tych plików i ich folderów. Nie potrzebowałem skryptów, więc je usunąłem. Po edycji bundle.config wszystko poszło dobrze.
źródło
Wszystko działało dobrze, a następnie podczas wprowadzania niepowiązanych zmian i przy następnej kompilacji napotkał ten sam problem. Użyłem kontroli źródła do porównania z poprzednimi wersjami i odkryłem, że mój folder ../Content/Scripts został w tajemniczy sposób opróżniony!
Przywrócono ../Content/Scripts/*.*z kopii zapasowej i wszystko działało dobrze!
ps: Używając VS2012, MVC4 niedawno zaktualizował niektóre pakiety NuGet, więc mogło to odegrać pewną rolę w problemie, ale wszystko działało dobrze przez jakiś czas po aktualizacji, więc nie jestem pewien.
źródło
zajrzyj do pliku BundleConfig.cs w poszukiwaniu wierszy, które wywołują IncludeDirectory ()
to znaczy:
mój katalog Grid nie istniał.
źródło
Miałem również ten błąd, gdy łączyłem wszystkie moje oddzielne pakiety w jeden pakiet.
Zmienić na
Musiałem odświeżyć pulę aplikacji w panelu sterowania mojego hostingu współdzielonego, aby naprawić ten problem.
źródło
Usunięcie tych wierszy kodu z pliku klasy bundleConfig.cs rozwiązało moje wyzwanie:
źródło
Żadna z tych odpowiedzi nie pomogła mi, ponieważ utworzyłem swoje
jsx
pliki w dziwny sposób. Mój kod działał w trybie localhost, ale nie udało się go wyprodukować.Rozwiązaniem dla mnie było wejście do
csproj
pliku i zmiana ścieżek plików z<None ...
na<Content ...
źródło
Zasadniczo ślad stosu podaje dokładne miejsce (jak zaznaczono na zrzucie ekranu), w którym musisz usunąć nieistniejący zasób.
źródło