Wdrażanie aplikacji internetowej ASP.NET za pomocą SQL Server Compact przy użyciu programu Visual Studio lub Visual Web Developer: Rozwiązywanie problemów (12 z 12)
Autor : Tom Dykstra
W tej serii samouczków pokazano, jak wdrożyć (opublikować) projekt aplikacji internetowej ASP.NET zawierający bazę danych SQL Server Compact przy użyciu programu Visual Studio 2012 RC lub Visual Studio Express 2012 RC for Web. Możesz również użyć programu Visual Studio 2010, jeśli zainstalujesz aktualizację publikowania w sieci Web. Aby zapoznać się z wprowadzeniem do serii, zobacz pierwszy samouczek z serii.
W samouczku przedstawiającym funkcje wdrażania wprowadzone po wersji RC programu Visual Studio 2012 przedstawiono sposób wdrażania wersji SQL Server innych niż SQL Server Compact oraz pokazano, jak wdrożyć w witrynach sieci Web platformy Windows Azure, zobacz temat ASP.NET Web Deployment using Visual Studio (Wdrażanie w internecie przy użyciu programu Visual Studio).
Na tej stronie opisano niektóre typowe problemy, które mogą wystąpić podczas wdrażania ASP.NET aplikacji internetowej przy użyciu programu Visual Studio. Dla każdej z nich podano co najmniej jedną możliwą przyczynę i odpowiednie rozwiązania.
Błąd serwera w aplikacji "/" — bieżące niestandardowe ustawienia błędu uniemożliwiają zdalne wyświetlanie szczegółów błędu
Scenariusz
Po wdrożeniu lokacji na hoście zdalnym zostanie wyświetlony komunikat o błędzie, który wspomina o ustawieniu customErrors w pliku Web.config, ale nie wskazuje, jaka była rzeczywista przyczyna błędu:
Server Error in '/' Application.
Runtime Error
Description: An application error occurred on the server. The current custom error settings
for this application prevent the details of the application error from being viewed remotely
(for security reasons). It could, however, be viewed by browsers running on the local server
machine.
Details: To enable the details of this specific error message to be viewable on remote machines,
please create a <customErrors> tag within a "web.config" configuration file located in the
root directory of the current web application. This <customErrors> tag should then have its
"mode" attribute set to "Off".
Możliwa przyczyna i rozwiązanie
Domyślnie ASP.NET wyświetla szczegółowe informacje o błędzie tylko wtedy, gdy aplikacja internetowa jest uruchomiona na komputerze lokalnym. Ogólnie rzecz biorąc, nie chcesz wyświetlać szczegółowych informacji o błędach, gdy aplikacja internetowa jest publicznie dostępna przez Internet, ponieważ hakerzy mogą używać tych informacji do znajdowania luk w zabezpieczeniach w aplikacji. Jednak podczas wdrażania lokacji lub aktualizacji w lokacji czasami coś pójdzie nie tak i trzeba uzyskać rzeczywisty komunikat o błędzie.
Aby umożliwić aplikacji wyświetlanie szczegółowych komunikatów o błędach podczas uruchamiania na hoście zdalnym, zmodyfikuj plik Web.config, aby ustawić customErrors
tryb, ponownie wdrożyć aplikację i ponownie uruchomić aplikację:
Jeśli plik Web.config aplikacji ma
customErrors
element wsystem.web
elemecie, zmieńmode
atrybut na "wyłączone". W przeciwnym razie dodajcustomErrors
element wsystem.web
elemecie z atrybutemmode
ustawionym na "off", jak pokazano w poniższym przykładzie:<configuration> <system.web> <customErrors mode="off"/> </system.web> </configuration>
Wdrażanie aplikacji.
Uruchom aplikację i powtórz wszystko, co wcześniej spowodowało wystąpienie błędu. Teraz możesz zobaczyć, jaki jest rzeczywisty komunikat o błędzie.
Po rozwiązaniu błędu przywróć oryginalne
customErrors
ustawienie i ponownie wdróż aplikację.
Odmowa dostępu na stronie sieci Web korzystającej z SQL Server Compact
Scenariusz
Podczas wdrażania lokacji korzystającej z SQL Server Compact i uruchomienia strony w wdrożonej lokacji, która uzyskuje dostęp do bazy danych, zostanie wyświetlony następujący komunikat o błędzie:
Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))
Możliwa przyczyna i rozwiązanie
Konto USŁUGI SIECIOWEJ na serwerze musi mieć możliwość odczytu natywnych plików binarnych usługi SQL Service Compact znajdujących się w folderze bin\amd64 lub bin\x86 , ale nie ma uprawnień do odczytu dla tych folderów. Ustaw uprawnienie do odczytu dla usługi SIECIOWEJ w folderze bin , aby rozszerzyć uprawnienia do podfolderów.
Nie można odczytać pliku konfiguracji z powodu niewystarczających uprawnień
Scenariusz
Po kliknięciu przycisku publikowania programu Visual Studio w celu wdrożenia aplikacji w usługach IIS na komputerze lokalnym publikowanie zakończy się niepowodzeniem, a w oknie Dane wyjściowe zostanie wyświetlony komunikat o błędzie podobny do następującego:
An error occurred when reading the IIS Configuration File 'MACHINE/REDIRECTION'.
The identity performing this operation was ... Error: Cannot read configuration file due to insufficient permissions.
Możliwa przyczyna i rozwiązanie
Aby użyć jednokrotnego publikowania w usługach IIS na komputerze lokalnym, musisz uruchomić program Visual Studio z uprawnieniami administratora. Zamknij program Visual Studio i uruchom go ponownie z uprawnieniami administratora.
Nie można nawiązać połączenia z komputerem docelowym ... Korzystanie z określonego procesu
Scenariusz
Po kliknięciu przycisku publikowania programu Visual Studio w celu wdrożenia aplikacji publikowanie zakończy się niepowodzeniem, a okno Dane wyjściowe wyświetli komunikat o błędzie podobny do następującego:
Web deployment task failed.(Could not connect to the destination computer ("<server URL>") using the specified process
("The Web Management Service"). This can happen if a proxy server is interrupting communication with the destination server.
Disable the proxy server and try again.) ... The remote server returned an error: (502) Bad Gateway.
Możliwa przyczyna i rozwiązanie
Serwer proxy przerywa komunikację z serwerem docelowym. W programie Windows Panel sterowania lub w programie Internet Explorer wybierz pozycję Opcje internetowe i wybierz kartę Połączenia. W oknie dialogowym Właściwości internetowe kliknij pozycję Ustawienia sieci LAN. W oknie dialogowym Ustawienia sieci lokalnej (LAN) wyczyść pole wyboru Automatycznie wykrywaj ustawienia . Następnie ponownie kliknij przycisk publikuj.
Jeśli problem będzie się powtarzać, skontaktuj się z administratorem systemu, aby określić, co można zrobić przy użyciu ustawień serwera proxy lub zapory. Ten problem występuje, ponieważ narzędzie Web Deploy używa nie standardowego portu dla wdrożenia usługi zarządzania siecią Web (8172); w przypadku innych połączeń narzędzie Web Deploy używa portu 80. Podczas wdrażania w dostawcy hostingu innej firmy zazwyczaj używasz usługi zarządzania siecią Web.
Domyślna pula aplikacji .NET 4.0 nie istnieje
Scenariusz
Podczas wdrażania aplikacji wymagającej .NET Framework 4 zostanie wyświetlony następujący komunikat o błędzie:
The default .NET 4.0 application pool does not exist or the application could not be added.
Please verify that ASP.NET 4.0 is installed on this machine.
Możliwa przyczyna i rozwiązanie
ASP.NET 4 nie jest zainstalowany w usługach IIS. Jeśli wdrażany serwer jest komputerem dewelopera i ma zainstalowany program Visual Studio 2010, ASP.NET 4 jest zainstalowany na komputerze, ale może nie być zainstalowany w usługach IIS. Na serwerze wdrażanym w programie otwórz wiersz polecenia z podwyższonym poziomem uprawnień i zainstaluj ASP.NET 4 w usługach IIS, uruchamiając następujące polecenia:
cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru
Może być również konieczne ręczne ustawienie .NET Framework wersji domyślnej puli aplikacji. Aby uzyskać więcej informacji, zobacz samouczek Wdrażanie w usługach IIS jako środowisko testowe .
Format ciągu inicjowania nie jest zgodny ze specyfikacją rozpoczynającą się od indeksu 0.
Scenariusz
Po wdrożeniu aplikacji przy użyciu publikowania jednokrotnego po uruchomieniu strony, która uzyskuje dostęp do bazy danych, zostanie wyświetlony następujący komunikat o błędzie:
Format of the initialization string does not conform to specification starting at index 0.
Możliwa przyczyna i rozwiązanie
Otwórz plik Web.config w wdrożonej lokacji i sprawdź, czy wartości parametrów połączenia zaczynają się od $(ReplaceableToken_
, jak w poniższym przykładzie:
<connectionStrings>
<add name="DefaultConnection" connectionString="$(ReplaceableToken_DefaultConnection-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
<add name="SchoolContext" connectionString="$(ReplaceableToken_SchoolContext-Web.config Connection String_0)" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>
Jeśli parametry połączenia wyglądają podobnie do tego przykładu, zmodyfikuj plik projektu i dodaj następującą właściwość do PropertyGroup
elementu, który jest przeznaczony dla wszystkich konfiguracji kompilacji:
<AutoParameterizationWebConfigConnectionStrings>False</AutoParameterizationWebConfigConnectionStrings>
Następnie ponownie wdróż aplikację.
Wewnętrzny błąd serwera HTTP 500
Scenariusz
Po uruchomieniu wdrożonej witryny zostanie wyświetlony następujący komunikat o błędzie bez konkretnych informacji wskazujących przyczynę błędu:
HTTP Error 500 - Internal Server Error.
Możliwa przyczyna i rozwiązanie
Istnieje wiele przyczyn błędów 500, ale jedną z możliwych przyczyn, jeśli obserwujesz te samouczki, jest umieszczenie elementu XML w niewłaściwym miejscu w jednym z plików transformacji XML. Na przykład ten błąd zostanie wyświetlony, jeśli umieścisz przekształcenie, które wstawia <location>
element w obszarze <system.web>
zamiast bezpośrednio w obszarze <configuration>
. Rozwiązaniem w tym przypadku jest skorygowanie pliku przekształcenia XML i ponowne wdrożenie.
Wewnętrzny błąd serwera HTTP 500.21
Scenariusz
Po uruchomieniu wdrożonej lokacji zostanie wyświetlony następujący komunikat o błędzie:
HTTP Error 500.21 - Internal Server Error.
Handler "PageHandlerFactory-Integrated" has a bad module "ManagedPipelineHandler" in its module list.
Możliwa przyczyna i rozwiązanie
Wdrożona witryna docelowa ASP.NET 4, ale ASP.NET 4 nie jest zarejestrowana w usługach IIS na serwerze. Na serwerze otwórz wiersz polecenia z podwyższonym poziomem uprawnień i zarejestruj ASP.NET 4, uruchamiając następujące polecenia:
cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –iru
Może być również konieczne ręczne ustawienie .NET Framework wersji domyślnej puli aplikacji. Aby uzyskać więcej informacji, zobacz samouczek Wdrażanie w usługach IIS jako środowisko testowe .
Logowanie nie powiodło się podczas otwierania bazy danych SQL Server Express w App_Data
Scenariusz
Zaktualizowano parametry połączenia pliku Web.config, aby wskazywały bazę danych SQL Server Express jako plik mdf w folderze App_Data, a po raz pierwszy uruchomisz aplikację, zostanie wyświetlony następujący komunikat o błędzie:
System.Data.SqlClient.SqlException: Cannot open database "DatabaseName" requested by the login. The login failed.
Możliwa przyczyna i rozwiązanie
Nazwa pliku mdf nie może być zgodna z nazwą żadnej bazy danych SQL Server Express, która kiedykolwiek istniała na komputerze, nawet jeśli plik mdf wcześniej istniejącej bazy danych został usunięty. Zmień nazwę pliku mdf na nazwę, która nigdy nie została użyta jako nazwa bazy danych, a następnie zmień plik Web.config , aby użyć nowej nazwy. Alternatywnie możesz użyć SQL Server Management Studio Express do usunięcia wcześniej istniejących baz danych SQL Server Express.
Nie można sprawdzić zgodności modelu
Scenariusz
Zaktualizowano parametry połączenia pliku Web.config, aby wskazywały nową bazę danych SQL Server Express i po raz pierwszy uruchomisz aplikację, zostanie wyświetlony następujący komunikat o błędzie:
Model compatibility cannot be checked because the database does not contain model metadata.
Ensure that IncludeMetadataConvention has been added to the DbModelBuilder conventions.
Możliwa przyczyna i rozwiązanie
Jeśli nazwa bazy danych umieszczona w pliku Web.config była kiedykolwiek używana wcześniej na komputerze, baza danych może już istnieć z niektórymi tabelami w nim. Wybierz nową nazwę, która nie została użyta na komputerze przed i zmień plik Web.config , aby wskazać, aby użyć tej nowej nazwy bazy danych. Alternatywnie możesz użyć SQL Server Management Studio Express, aby usunąć istniejącą bazę danych.
Błąd SQL, gdy skrypt próbuje utworzyć użytkowników lub role
Scenariusz
Używasz wdrożenia bazy danych skonfigurowanego na karcie Package/Publish SQL (Tworzenie użytkownika lub Tworzenie roli), a wykonywanie skryptu kończy się niepowodzeniem po wykonaniu tych poleceń. Mogą pojawić się bardziej szczegółowe komunikaty, takie jak następujące:
The approximate location of the error was between lines '1' and '3' of the script.
The verbose log may have more information about the error. The command started with:
CREATE USER [user2] FOR LOGIN [user2] WITH DEFAULT
Error: User does not have permission to perform this action.
Jeśli ten błąd występuje podczas konfigurowania wdrożenia bazy danych w kreatorze publikowania sieci Web , a nie na karcie Package/Publish SQL( Pakiet/Publikowanie bazy danych SQL ), utwórz wątek na forum Konfiguracja i wdrożenie , a rozwiązanie zostanie dodane do tej strony rozwiązywania problemów.
Możliwa przyczyna i rozwiązanie
Konto użytkownika używane do wdrożenia nie ma uprawnień do tworzenia użytkowników ani ról. Na przykład firma hostingowa może przypisywać db_datareader
role , db_datawriter
i db_ddladmin
do konta użytkownika, które konfiguruje. Są one wystarczające do tworzenia większości obiektów bazy danych, ale nie do tworzenia użytkowników lub ról. Jednym ze sposobów uniknięcia błędu jest wykluczenie użytkowników i ról z wdrożenia bazy danych. Można to zrobić, edytując PreSource
element automatycznie wygenerowanego skryptu bazy danych, tak aby zawierał następujące atrybuty:
CopyAllUsers=false, CopyAllRoles=false
Aby uzyskać informacje o sposobie edytowania PreSource
elementu w pliku projektu, zobacz How to: Edit Deployment Settings in the Project File (Instrukcje: edytowanie ustawień wdrożenia w pliku projektu). Jeśli użytkownicy lub role w bazie danych deweloperów muszą znajdować się w docelowej bazie danych, skontaktuj się z dostawcą hostingu, aby uzyskać pomoc.
SQL Server błąd przekroczenia limitu czasu podczas uruchamiania skryptów niestandardowych podczas wdrażania
Scenariusz
Określono niestandardowe skrypty SQL, które mają być uruchamiane podczas wdrażania, a gdy narzędzie Web Deploy je uruchamia, upłynął limit czasu.
Możliwa przyczyna i rozwiązanie
Uruchamianie wielu skryptów z różnymi trybami transakcji może powodować błędy przekroczenia limitu czasu. Domyślnie skrypty generowane automatycznie są uruchamiane w transakcji, ale skrypty niestandardowe nie. W przypadku wybrania opcji Pull data and/or schema (Ściąganie danych i/lub schematu) na karcie Package/Publish SQL (Pakiet/Publikowanie kodu SQL ), a w przypadku dodania niestandardowego skryptu SQL należy zmienić ustawienia transakcji w niektórych skryptach, aby wszystkie skrypty używały tych samych ustawień transakcji. Aby uzyskać więcej informacji, zobacz How to: Deploy a Database With a Web Application Project (Jak wdrożyć bazę danych za pomocą projektu aplikacji internetowej).
Jeśli skonfigurowano ustawienia transakcji tak, aby wszystkie te same, ale nadal otrzymuję ten błąd, możliwe obejście polega na osobnym uruchomieniu skryptów. W siatce Skrypty bazy danych na karcie Package/Publish SQL usuń zaznaczenie pola wyboru Dołącz dla skryptu, który powoduje błąd przekroczenia limitu czasu, a następnie opublikuj projekt. Następnie wróć do siatki Skrypty bazy danych , zaznacz pole wyboru Uwzględnij skrypt i wyczyść pola wyboru Uwzględnij dla innych skryptów. Następnie ponownie opublikuj projekt. Tym razem podczas publikowania zostanie uruchomiony tylko wybrany skrypt niestandardowy.
Dane strumienia manifestu witryny nie są jeszcze dostępne
Scenariusz
Podczas instalowania pakietu przy użyciu pliku deploy.cmd z opcją t
(test) zostanie wyświetlony następujący komunikat o błędzie:
Error: The stream data of 'sitemanifest/dbFullSql[@path='C:\TEMP\AdventureWorksGrant.sql']/sqlScript' is not yet available.
Możliwa przyczyna i rozwiązanie
Komunikat o błędzie oznacza, że polecenie nie może utworzyć raportu testowego. Jednak polecenie może zostać uruchomione, jeśli używasz y
opcji (rzeczywista instalacja). Komunikat wskazuje tylko, że wystąpił problem z uruchomieniem polecenia w trybie testowym.
Ta aplikacja wymaga elementu ManagedRuntimeVersion w wersji 4.0
Scenariusz
Podczas próby wdrożenia zostanie wyświetlony następujący komunikat o błędzie:
Błąd: dane strumienia "sitemanifest/dbFullSql[@path='C:\TEMP\AdventureWorksGrant.sql']/sqlScript' nie są jeszcze dostępne. Pula aplikacji, której próbujesz użyć, ma właściwość "managedRuntimeVersion" ustawioną na wartość "v2.0". Ta aplikacja wymaga wersji 4.0.
Możliwa przyczyna i rozwiązanie
ASP.NET 4 nie jest zainstalowany w usługach IIS. Jeśli wdrażany serwer jest komputerem dewelopera i ma zainstalowany na nim program Visual Studio 2010, ASP.NET 4 jest zainstalowany na komputerze, ale może nie być zainstalowany w usługach IIS. Na serwerze, w którym wdrażasz, otwórz wiersz polecenia z podwyższonym poziomem uprawnień i zainstaluj ASP.NET 4 w usługach IIS, uruchamiając następujące polecenia:
cd %windir%\Microsoft.NET\Framework\v4.0.30319
aspnet_regiis.exe –i
Nie można rzutować elementu Microsoft.Web.Deployment.DeploymentProviderOptions
Scenariusz
Podczas wdrażania pakietu zostanie wyświetlony następujący komunikat o błędzie:
Unable to cast object of type 'Microsoft.Web.Deployment.DeploymentProviderOptions' to 'Microsoft.Web.Deployment.DeploymentProviderOptions'.
Możliwa przyczyna i rozwiązanie
Próbujesz wdrożyć z Menedżera usług IIS przy użyciu interfejsu użytkownika narzędzia Web Deploy 1.1 na serwerze z zainstalowanym programem Web Deploy 2.0. Jeśli używasz narzędzia administracji zdalnej usług IIS do wdrożenia przez zaimportowanie pakietu, zaznacz okno dialogowe Nowe dostępne funkcje podczas nawiązywania połączenia. (To okno dialogowe może być wyświetlane tylko raz, gdy połączenie zostanie nawiązane po raz pierwszy. Aby wyczyścić połączenie i rozpocząć pracę, zamknij Menedżera usług IIS i uruchom je ponownie, wprowadzając polecenie inetmgr /reset
w wierszu polecenia. Jeśli jedną z wymienionych funkcji jest interfejs użytkownika narzędzia Web Deploy i ma numer wersji mniejszy niż 8, wdrażany serwer może mieć zainstalowane wersje 1.1 i 2.0 narzędzia Web Deploy. Aby wdrożyć z poziomu klienta z zainstalowaną wersję 2.0, na serwerze musi być zainstalowany tylko program Web Deploy 2.0. Aby rozwiązać ten problem, musisz skontaktować się z dostawcą hostingu.
Nie można załadować składników natywnych SQL Server Compact
Scenariusz
Po uruchomieniu wdrożonej witryny zostanie wyświetlony następujący komunikat o błędzie:
Unable to load the native components of SQL Server Compact corresponding to the ADO.NET provider of version 8482.
Install the correct version of SQL Server Compact. Refer to KB article 974247 for more details.
Możliwa przyczyna i rozwiązanie
Wdrożona witryna nie ma podfolderów amd64 i x86 z natywnymi zestawami w nich w folderze bin aplikacji. Na komputerze, na którym zainstalowano SQL Server Compact, zestawy natywne znajdują się w folderze C:\Program Files\Microsoft SQL Server Compact Edition\v4.0\Private. Najlepszym sposobem na pobranie poprawnych plików do odpowiednich folderów w projekcie programu Visual Studio jest zainstalowanie pakietu NuGet SqlServerCompact. Instalacja pakietu dodaje skrypt po kompilacji w celu skopiowania natywnych zestawów do procesorów amd64 i x86. Aby można je było wdrożyć, należy je jednak ręcznie uwzględnić w projekcie. Aby uzyskać więcej informacji, zobacz samouczek Wdrażanie SQL Server Compact.
Błąd "Ścieżka jest nieprawidłowa" po wdrożeniu aplikacji Entity Framework Code First
Scenariusz
Wdrażasz aplikację, która używa migracje Code First platformy Entity Framework i systemu DBMS, takiego jak SQL Server Compact, która przechowuje swoją bazę danych w pliku w folderze App_Data. Po pierwszym wdrożeniu skonfigurowano Migracje Code First utworzenia bazy danych. Po uruchomieniu aplikacji zostanie wyświetlony komunikat o błędzie podobny do następującego przykładu:
The path is not valid. Check the directory for the database. [Path = c:\inetpub\wwwroot\App_Data\DatabaseName.sdf ]
Możliwa przyczyna i rozwiązanie
Program Code First próbuje utworzyć bazę danych, ale folder App_Data nie istnieje. Nie masz żadnych plików w folderze App_Data podczas wdrażania lub wybrano opcję Wyklucz App_Data na karcie Pakiet/Publikowanie w sieci Web okna Właściwości projektu . Proces wdrażania nie utworzy folderu na serwerze, jeśli na serwerze nie ma żadnych plików do skopiowania do serwera. Jeśli baza danych została już skonfigurowana w lokacji, proces wdrażania spowoduje usunięcie plików i samego folderu App_Data po wybraniu opcji Usuń dodatkowe pliki w miejscu docelowym w profilu publikowania. Aby rozwiązać ten problem, umieść plik zastępczy, taki jak plik .txt w folderze App_Data , upewnij się, że nie wybrano App_Data wykluczania i ponownego wdrażania.
"Nie można użyć obiektu COM, który został oddzielony od jego bazowego RCW."
Scenariusz
Udało Ci się pomyślnie użyć publikowania jednym kliknięciem w celu wdrożenia aplikacji, a następnie zaczniesz otrzymujeć następujący błąd:
Web deployment task failed. (Could not complete the request to remote agent URL 'https://serverurl.com/msdeploy.axd?site=sitename'.)
Could not complete the request to remote agent URL 'https://url/msdeploy.axd?site=sitename'.
The request was aborted: The request was canceled.
COM object that has been separated from its underlying RCW cannot be used.
Możliwa przyczyna i rozwiązanie
Zamykanie i ponowne uruchamianie programu Visual Studio jest zwykle wymagane do rozwiązania tego błędu.
Wdrażanie kończy się niepowodzeniem, ponieważ poświadczenia użytkownika używane do publikowania nie mają ustawionego urzędu kontroli dostępu
Scenariusz
Publikowanie kończy się niepowodzeniem z powodu błędu wskazującego, że nie masz uprawnień do ustawiania uprawnień folderu (używane konto użytkownika nie ma urzędu setACL).
Możliwa przyczyna i rozwiązanie
Domyślnie program Visual Studio ustawia uprawnienia do odczytu w folderze głównym witryny i uprawnienia do zapisu w folderze App_Data. Jeśli wiesz, że domyślne uprawnienia w folderach witryny są poprawne i nie trzeba ich ustawiać, należy wyłączyć to zachowanie, dodając <wartość IncludeSetACLProviderOn Destination>False</IncludeSetACLProviderOnDestination> do pliku profilu publikowania (aby wpłynąć na pojedynczy profil) lub do pliku wpp.targets (aby wpłynąć na wszystkie profile). Aby uzyskać informacje o sposobie edytowania tych plików, zobacz How to: Edit Deployment Settings in Profile (.pubxml) Files (Jak edytować ustawienia wdrożenia w plikach profilu (.pubxml).
Błędy odmowy dostępu, gdy aplikacja próbuje zapisać w folderze aplikacji
Scenariusz
Aplikacja jest błędna podczas próby utworzenia lub edytowania pliku w jednym z folderów aplikacji, ponieważ nie ma urzędu zapisu dla tego folderu.
Możliwa przyczyna i rozwiązanie
Domyślnie program Visual Studio ustawia uprawnienia do odczytu w folderze głównym witryny i uprawnienia do zapisu w folderze App_Data. Jeśli aplikacja wymaga dostępu do zapisu do podfolderu, możesz ustawić uprawnienia dla tego folderu, jak pokazano w samouczkach Ustawianie uprawnień folderu i Wdrażanie w środowisku produkcyjnym . Jeśli aplikacja wymaga dostępu do zapisu w folderze głównym witryny, musisz uniemożliwić jej ustawienie dostępu tylko do odczytu w folderze głównym przez dodanie <elementu IncludeSetACLProviderOn Destination>False</IncludeSetACLProviderOnDestination> do pliku profilu publikowania (aby wpłynąć na jeden profil) lub do pliku wpp.targets (aby wpłynąć na wszystkie profile). Aby uzyskać informacje o sposobie edytowania tych plików, zobacz How to: Edit Deployment Settings in Profile (.pubxml) Files (Jak edytować ustawienia wdrożenia w plikach profilu (.pubxml).
Błąd konfiguracji — atrybut targetFramework odwołuje się do wersji nowszej niż zainstalowana wersja .NET Framework
Scenariusz
Pomyślnie opublikowano projekt internetowy przeznaczony dla ASP.NET 4.5, ale po uruchomieniu aplikacji (z trybem customErrors
ustawionym na "wyłączone" w pliku Web.config) występuje następujący błąd:
The 'targetFramework' attribute in the <compilation> element of the Web.config
file is used only to target version 4.0 and later of the .NET Framework (for
example, '<compilation targetFramework="4.0">'). The 'targetFramework' attribute
currently references a version that is later than the installed version of the
.NET Framework. Specify a valid target version of the .NET Framework, or install
the required version of the .NET Framework.
W polu Błąd źródłowy strony błędu wyróżniono następujący wiersz z Web.config jako przyczynę błędu:
<compilation targetFramework="4.5" />
Możliwa przyczyna i rozwiązanie
Serwer nie obsługuje ASP.NET 4.5. Skontaktuj się z dostawcą hostingu, aby określić, kiedy i kiedy można dodać obsługę ASP.NET 4.5. Jeśli uaktualnienie serwera nie jest opcją, należy wdrożyć projekt internetowy przeznaczony dla ASP.NET 4 lub starszej wersji. W przypadku wdrożenia projektu internetowego ASP.NET 4 lub starszego w tym samym miejscu docelowym zaznacz pole wyboru Usuń dodatkowe pliki w miejscu docelowym na karcie Ustawienia Kreatora publikowania w sieci Web . Jeśli nie wybierzesz pozycji Usuń dodatkowe pliki w miejscu docelowym, będziesz nadal otrzymywać stronę Błąd konfiguracji.
Okna właściwości projektu zawierają listę rozwijaną Platforma docelowa, ale nie można rozwiązać tego problemu, zmieniając tę wartość z .NET Framework 4.5 na .NET Framework 4. Jeśli zmienisz platformę docelową na starszą wersję platformy, projekt będzie nadal zawierać odwołania do zestawów nowszej wersji platformy i nie zostanie uruchomiony. Musisz ręcznie zmienić te odwołania lub utworzyć nowy projekt przeznaczony dla .NET Framework 4 lub starszej wersji. Aby uzyskać więcej informacji, zobacz .NET Framework Określanie elementów docelowych dla witryn sieci Web.