Nicht erkanntes Attribut 'targetFramework'. Beachten Sie, dass bei Attributnamen zwischen Groß- und Kleinschreibung unterschieden wird

416

Ich versuche, meine Website hochzuladen und erhalte die folgende Fehlermeldung:

Nicht erkanntes Attribut 'targetFramework'. Beachten Sie, dass bei Attributnamen zwischen Groß- und Kleinschreibung unterschieden wird.

<compilation debug="true" targetFramework="4.0">

Die Site funktioniert auf meinem lokalen PC einwandfrei, wird jedoch nicht geöffnet, wenn ich sie auf meinen Host geladen und versucht habe, sie online anzuzeigen.

Mike Nacci
quelle
Zeigt es nicht an, welche Datei das enthält oder wo?
Jon Skeet
2
Wurde es zuvor auf einem Framework vor 4.0 aufgebaut? elegantcode.com/2009/11/10/…
Ta01
Dieses Problem kann durch 4.0.3 behoben werden. Den KB-Artikel finden Sie hier. @ me und lassen Sie mich wissen, wenn dies Ihr Problem behebt. Ich kann versuchen, eine kanonische Frage / Antwort für diesen Fehler zu erhalten und Dupes zu schließen. Vielen Dank.
Wenn ich versuche, KB2599651 (64-Bit-Download) unter Win 7 x64 zu installieren, wird die Fehlermeldung angezeigt, dass es "nicht zutrifft oder durch eine andere Bedingung auf Ihrem Computer blockiert wird". Ich habe den gleichen Fehler wie OP, habe Framework 4.0 installiert und bei IIS registriert und als Anwendungspool ausgewählt.
Tim
Haben Sie in einer älteren Version von Visual Studio geöffnet, als das Projekt in entwickelt wurde? Oder wurde es in Webmatrix entwickelt und dann in einem älteren visuellen Studio eröffnet?
Ruffrey

Antworten:

610

Dies geschieht normalerweise, wenn Sie ein Attribut von targetFramework="4.0"in der web.config haben, der App-Pool jedoch so eingestellt ist, dass ASP.NET 2.0 ausgeführt wird. DastargetFramework Attribut wird von ASP.NET 2.0 nicht erkannt. Wenn Sie es also in 2.0 ändern, hat dies nicht den gewünschten Effekt.

Wenden Sie sich an den Support / Ihren Administrator und lassen Sie den AppPool auf 4.0 umstellen.

Sie können das Attribut auch vollständig entfernen. Wenn Ihre Site jedoch mit dem 4.0 Framework codiert wurde, führt sicher auch ein anderer Fehler aus.

vcsjones
quelle
20
Vielen Dank, dies hat das Problem gelöst. Überprüfen Sie diesen Link auf eine schrittweise Anleitung, um Ihren AppPool auf 4.0 umzustellen
user1010572
danke @ vcsjones..my Website ist jetzt nur wegen dir in Betrieb .. :)
Shiva Pareek
Nur um die @ vcsjones-Lösung zu ergänzen, wird möglicherweise auch die Registrierung von .net 4.0 übersehen. Sie können die .net 4.0-Registrierung mithilfe des in diesem Link beschriebenen Verfahrens durchführen und anschließend den Anwendungspool auf 4.0 ändern.
Ram
4
Als ich die Fehlermeldung gegoogelt habe, habe ich diese Seite mit dieser schönen Frage und einer noch schöneren Antwort gefunden, die ich bereits vor Monaten positiv bewertet habe.
Memet Olsen
81

Die Registrierung des Frameworks bei IIS hat für mich funktioniert:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis -i
Kenik
quelle
7
Das funktioniert! für 64bit ist unter C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319
Jerry Liang
1
Ich hatte das gleiche Problem, aber die Regiis haben es nicht behoben - ich musste den gesamten Website-Baum
löschen
1
Wenn dies eine neue Version von IIS ist (keine anderen Sites, die darauf ausgeführt werden) oder Sie sich keine Sorgen darüber machen, dass die gehosteten Sites mit einer Framework-Änderung nicht mehr funktionieren, können Sie bei der Registrierung -i anstelle von -ir verwenden.
Ram
43

Öffnen Sie Ihren IIS (geben Sie inetmgr in run ein) und ändern Sie die Einstellung für den Anwendungspool. Um dieses Bild groß anzuzeigen, klicken Sie mit der rechten Maustaste auf Bild und öffnen Sie das Bild auf einer neuen Registerkarte Geben Sie hier die Bildbeschreibung ein

Ankit
quelle
43

In IIS

Klicken Sie auf Anwendungspools

Klicken Sie mit der rechten Maustaste auf DefaultAppPool --- >> Standard für Anwendungspool festlegen ....--- >> Ändern Sie die .Net-Version in V 4.0.

Alexander Zaldostanov
quelle
26

Im Visual Studio-Menü:

Website -> Startoptionen -> Registerkarte "Erstellen" -> Ziel-Framework im Dropdown-Feld auswählen (.NET FrameWork 4)

elaiyaraja
quelle
oder 4.5 in meinem Fall :)
user230910
Was ist, wenn der Server nur 2.0 hat? sollte notwendig sein, um 4.0 / 4.5 zu installieren?
Juran
@ user230910 Wo ist diese Option?
DiegoS
Ich kann mich nicht klar erinnern, aber ich denke, dies bezieht sich auf IIS
user230910
Funktionierte perfekt für mich MAI 2019 mit Visual Studio 2019 Web Forms App auf AWS EC2 Windows Server 2019.
Doug Null
12

Bei der Veröffentlichung meiner ersten Webdienste hatte ich das gleiche Problem. Ich habe es einfach so gelöst:

  1. Öffnen Sie IIS

  2. Klicken Sie auf Anwendungspools

  3. Klicken Sie mit der rechten Maustaste auf DefaultAppPool => Standard für Anwendungspool festlegen => .NET-Version auf V 4.0 ändern. (Sie können die .Net Framework-Version Ihrer Anwendung auch speziell ändern.)

Hoffe, es wird funktionieren.

Arsman Ahmad
quelle
9

Versuchen Sie es mit IIS 7 gemäß dem angegebenen Bild. Markieren Sie mich als hilfreich, wenn es für Sie funktioniert.

Geben Sie hier die Bildbeschreibung ein

gm arif
quelle
8

Ich musste ASP.Net in IIS registrieren, um es in Windows Server 2008 R2 aufzulösen. Screenshot der unten aufgeführten Befehle

cd /d C:\Windows\Microsoft.NET\Framework\v4.0.30319

iisreset /stop

aspnet_regiis -i

iisreset /start

%systemroot%\system32\inetsrv\appcmd set config /section:isapiCgiRestriction /[path='%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll'].allowed:True 

%systemroot%\system32\inetsrv\appcmd set config /section:isapiCgiRestriction /[path='%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll'].allowed:True 

Geben Sie hier die Bildbeschreibung ein

LCJ
quelle
5

Ändern Sie den Anwendungspool in Zielframework 4.0 anstelle von klassisch.

  1. RC-Website -> Website verwalten-> Erweiterte Einstellungen>
  2. Die erste Option wechselt von klassisch zu Framework 4 integriert.
dev.Magdy
quelle
5

Ich verwende IIS Express anstelle von IIS.

Das Problem befand sich in der Datei applicationhost.config in: {Lösungsordner} \. Vs \ config \ applicationhost.config.

Einer der Anwendungspooleinträge hatte den Wert "manageRuntimeVersion" von "v2.0". Ich habe es in "v4.0" geändert und es hat richtig funktioniert.

Ich bin mir ziemlich sicher, dass die Hauptursache eines der NuGet-Pakete war, die ich kürzlich installiert hatte.

    <system.applicationHost>
       <applicationPools>
          <add name="BadAppPool1" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%\config\aspnet.config" autoStart="true" />
       </applicationPools>
    </system.applicationHost>
Nachtschaufel
quelle
2
Schön, jeder einzelne Beitrag erwähnte IIS. Ich habe IIS Express verwendet. Danke für das
Update
4

Projekt öffnen -> Presse Shift + F4 (Open Eigenschaftenseite) -> Wählen Sie Erstellen -> in Target Framework wählte .NET Framework 4 -> OK

Chưa biết
quelle
3

Erstellen Sie einen neuen Pool, indem Sie .Net Framework v4.0.3xxxxx auswählen

Verwenden Sie den Pipeline-Modus verwalten: Integriert

Weisen Sie es Ihrer Site zu und fertig.

Ali Adravi
quelle
2

Um dieses Problem zu beheben, klicken Sie einfach auf das Symbol ASP.NET-Version im Abschnitt Site Tools der Systemsteuerung, um das Framework auf 4.0 umzustellen.

Sumanuski
quelle
2

Ich hatte diesen Fehler aufgrund einer fehlgeschlagenen MSBuild- Kompilierung in einer Projektdatei, die von einer früheren Version von VS in VS2010 und .NET 4.0 konvertiert wurde. Es war eigentlich ein Web Deployment-Projekt, und die Lösung, die für mich funktionierte, bestand darin, die folgenden Einträge in den Abschnitt PropertyGroup am Anfang der MSBuild- Datei einzufügen :

<ProductVersion>10.0.11107</ProductVersion>

<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>

Möglicherweise werden diese automatisch aktualisiert, wenn andere Projekttypen in VS2010 konvertiert werden, aber sie fehlten nach der Konvertierung in meiner Web Deployment-Projektdatei.

Ergolargo
quelle
2

Was ich getan habe: Ich habe den Wert des Anwendungspools von einem vorherigen Wert in DefaultAppPool geändert. Dies tun Sie in den erweiterten Einstellungen (Website -> Website verwalten -> Erweiterte Einstellungen>.

Eldon
quelle
2

Ich habe auch das gleiche Problem beim lokalen Ausführen meiner Anwendung, das auf .Net Framework 4.7.1 verweist. Der Fehler war " Nicht erkanntes Attribut TargetFrameWork ", wie unten gezeigt. Geben Sie hier die Bildbeschreibung ein

Aber keine der obigen Antworten hat mir geholfen. Als ich endlich meine aktuelle Portnummer (1413) in einen anderen Wert (60179) geändert habe, wie unten gezeigt, hat es für mich gut funktioniert. Aber ich bin mir aus dem tatsächlichen Grund nicht sicher, aber es hat funktioniert.

Geben Sie hier die Bildbeschreibung ein

Rinoy Ashokan
quelle
Ich überprüfe nur, ob ich genau diesen Fehler hatte, und habe versucht, einfach den Port zu ändern, wie in dieser Antwort angegeben. Ich führe den WCF-Testclient aus, um diesen Dienst auf localhost zu starten. Nach dem Ändern der Portnummer konnte der Dienst gestartet werden. Danke für deinen Vorschlag.
Evan
Nachdem ich alle Vorschläge ausprobiert hatte, löste nur dieser mein Problem. Ich danke dir sehr.
Prabo
Ihr Willkommen @Prabo, wenn möglich, bitte helfen Sie mir bei der UP-Abstimmung
Rinoy Ashokan
Ihr Willkommen @Evan, wenn möglich, bitte helfen Sie mir bei der UP-Abstimmung
Rinoy Ashokan
1

Hatte dies gerade in VS 2010.

Dies wurde behoben , indem die SLN-Datei bearbeitet und der TargetFrameworkMoniker so geändert wurde , dass ihm der Wert ".NETFramework, Version% 3Dv4.0" zugewiesen wurde.

Matt
quelle
0

Wenn Sie die Dateien kompilieren und der Wert von "targetFramework" als eine bestimmte Version festgelegt ist, z. B. 4.0,

Stellen Sie sicher, dass auf dem Host das .net-Framework mit derselben angegebenen Version ausgeführt wird.

Wenn nicht, laden Sie das .net-Framework herunter.

Wenn nach dem Herunterladen im IIS-Manager nicht automatisch festgelegt wird, dass die Erweiterung der neu heruntergeladenen Version des .net-Frameworks verwendet wird,

Fügen Sie die Erweiterung manuell hinzu, indem Sie in den Ordner des kürzlich heruntergeladenen .net-Frameworks über den IIS-Manager wechseln:

1. Klicken Sie mit der rechten Maustaste auf den Website-Ordner

2. Gehen Sie zu "Eigenschaften"

3. Klicken Sie unter "Virtuelles Verzeichnis" auf "Konfiguration".

4. Bearbeiten Sie den ausführbaren Pfad der Erweiterung ".aspx" (von dem der Pfad auf eine andere Version als die Version des kürzlich heruntergeladenen .net-Frameworks verweist) in den richtigen Pfad, der der Ordner der NEU heruntergeladenen Version des .net-Frameworks ist und wählen Sie dann die Datei "aspnet_isapi.dll" aus.

5.Klicken Sie auf OK!

Futter
quelle
0

Entfernen Sie einfach das "Target Framework 4.0" und schließen Sie die Halterung.

Es wird klappen

Vignesh
quelle
0

Befolgen Sie diese beiden Schritte:

Registrieren Sie die .net Framework-Version Version 4.0 (falls sie nicht registriert ist).

  1. C: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319> aspnet_regiis -i

  2. Ändern Sie im App-Pool das .net-Framework in Version 4.0

SharpCoder
quelle
0

Wenn Sie den IIS nach der Installation von .Net FrameWork installieren. Sie müssen das .net-Framework für IIS erneut installieren. Wir müssen also nur rennen aspnet_regiis -i. Hoffe es ist hilfreich.

Joe.wang
quelle
0

Der Fehler "Nicht erkanntes Attribut 'targetFramework'" wurde auf der Seite "Konsolenausgabe" von Jenkins auf einem Build-Server angezeigt. Dies geschah, nachdem ich das 'Zielframework' für mehrere Projekte von '.NET Framework 3.5' in '.NET Framework 4' geändert und meine Änderungen festgeschrieben hatte.

In Jenkins mussten die Projekteinstellungen geändert werden. Für die Lösung musste die 'MSBuild Version' von 'v3.5' auf 'v4.0' geändert werden.

mathijsuitmegen
quelle
0

Hatte gerade dieses Problem beim Bereitstellen einer neuen App auf einer alten IIS-Box. Die Untersuchung führte dazu, dass die Laufzeit von Version 4.5.1 installiert wurde, die App jedoch Version 4.5.2 erfordert

Außer der Installation der richtigen Version von ASP .Net Runtime war nichts erforderlich.

rauben
quelle
0

Möglicherweise haben Sie eine eigene MSBUILD-Projektdatei und verwenden die <AspNetCompiler>Aufgabe. In diesem Fall sollten Sie das ToolPathfür .NET4 hinzufügen .

<AspNetCompiler
    VirtualPath="/MyFacade"
    PhysicalPath="$(MSBuildProjectDirectory)\MyFacade\"
    TargetPath="$(MSBuildProjectDirectory)\Release\MyFacade"
    Updateable="true"
    Force="true"
    Debug="false"
    Clean="true"
    ToolPath="C:\Windows\Microsoft.NET\Framework\v4.0.30319\">      
</AspNetCompiler>
unerschrocken
quelle
0

Zum Überlagern ändern Sie einfach die Version von targetFramework nur in der Datei web.config, die anderen Dinge müssen nicht geändert werden.

Cheah Eng Teong
quelle
0

Die folgenden zwei Schritte erzwingen die Aktualisierung des Visual Studio- und IIS Express-Cache und lösen normalerweise meine ähnlichen Probleme:

  1. Wechseln Sie einfach das Project Framework von 4+ zu .Net Framework 3.5 und führen Sie es aus
  2. Wenn es erfolgreich ausgeführt wurde, können Sie es auf das gewünschte 4+ Ziel-Framework zurücksetzen und sehen, dass es wahrscheinlich wieder funktioniert.
Iman
quelle
0

Das Ändern der Portnummer für die lokale Entwicklung hat mir geholfen. Danke @Rinay Ashokan. Ich habe alle Fehlerbehebungen durchgeführt und schließlich festgestellt, dass die Projektkonfigurationen im IIS Express für die Portnummer gespeichert sind. Geben Sie hier die Bildbeschreibung ein

karthikn2411
quelle
-1

Für alle, die dies haben und auf deren Entwicklungs-PC kein IIS ausgeführt wird, ist Folgendes passiert: Ich hatte eine Website auf, die mit Dateien von einer Diff-Website überschrieben wurde, die 4 war, während die vorherige 3,5 war. Habe diesen Fehler. Es wurde einfach durch Ändern des Verzeichnisnamens der Website behoben, was auf einem Entwicklungs-PC alles sein kann, also kein Problem. Die oben genannten sind wahrscheinlich eleganter, um sicher zu sein, aber manchmal funktionieren sie einfach, WENN Sie damit durchkommen können, dh Sie sind eher in der Entwicklung als in der Qualitätssicherung oder im Prod.

Paul
quelle