2009-01-05 10 views
5

Utworzono projekt wdrożenia WWW przy użyciu szablonu dla programu Visual Studio 2008 dla aplikacji sieci web ASP.NET 3.5 (nie strony internetowej).Wstępnie skompilowana aplikacja internetowa ASP.NET: błąd "System.Web.HttpException plik filename.aspx nie został wstępnie skompilowany i nie można go uzyskać."

Skompilowałem projekt, który utworzył pliki potrzebne do wdrożenia. Skopiowałem foldery wynikowe (bin, pliki statyczne i wszystkie foldery z symbolami zastępczymi aspx itp.) Na serwer pomostowy, w którym chciałem przetestować aplikację.

Jeśli I NIE banderą na opcję „Zezwalaj temu prekompilowany witryny mają być aktualizowalny”, otrzymuję komunikat o błędzie na każdej stronie załadować w przeglądarce:

 
System.Web.HttpException file PAGENAME.aspx has not been pre-compiled, 
and cannot be requested. 

ostatnim wierszu w ślad stosu:

 
System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(
    VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, 
    Boolean allowBuildInPrecompile) +8756366 

Jeśli zaznaczysz opcję, wszystko jest w porządku (chyba dlatego rzeczywista aspx/ascx są nadal w ich pierwotnej formie).

Masz pomysł, czego tu brakuje? Czy jest jakieś ustawienie lub specjalny plik, którego zapomniałem skopiować?

Dziękujemy!

Uwagi:

  • Mam kilka odniesień do zespołów trzecich
  • Sprawdziłem folder bin na serwerze pomostowym. Zawiera on wstępnie skompilowany zestaw, który zawiera wszystkie klasy (użyłem reflektora do analizy złożenia).

Odpowiedz

7

Wszystkie pliki ASPX powinna zawierać tylko

Ten plik marker wygenerowany przez nowego narzędzia prekompilacja i powinien nie zostaną usunięte!

Usuń wszystko z folderu bin i ponownie opublikuj sieć. Upewnij się, że pliki zostały pobrane z katalogu, w którym opublikowano plik.

Upewnij się, że skopiowałeś również pliki .compiled zawarte w folderze bin.

+0

Dziękuję za odpowiedź! Nie zawierał dokładnego rozwiązania, ale doprowadził mnie do ponownego sprawdzenia folderów bin. Zapomniałem wstawić pliki ".compiled" do procedury automatycznego kopiowania na serwer. Zmienię twoją odpowiedź, a ja ją zaakceptuję. – splattne

1

Dla przypomnienia, zapomniałem skopiować te „.compiled” pliki (MSDN documentation: File Handling During ASP.NET Precompilation):

dla plików wykonywalnych w sieci aplikacji ASP.NET, zespoły i kompilator Pliki z .compiled nazwa pliku rozszerzenie. Nazwa zestawu to wygenerowana przez kompilator. Skompilowany plik nie zawiera kodu wykonywalnego . Zamiast tego zawiera on tylko informację, że program ASP.NET musi znaleźć odpowiedni zespół .

Po wdrożeniu wstępnie skompilowanej aplikacji , ASP.NET używa złożeń w folderze Bin do przetwarzania żądań. Dane wyjściowe prekompilacji obejmują pliki .aspx lub .asmx jako placeholder dla stron. Pliki zastępcze nie zawierają kodu. Istnieją tylko do , które umożliwiają wywoływanie ASP.NET dla żądania strony konkretnej , dzięki czemu można ustawić uprawnienia do pliku , aby ograniczyć dostęp do stron .

Powiązane problemy