Runtimeänderungen für die Migration zu .NET Framework 4.7.x

In diesem Artikel werden App-Kompatibilitätsprobleme aufgeführt, die in .NET Framework 4.7, 4.7.1 und 4.7.2 auftreten.

.NET Framework 4.7

JIT

Falsche Codegenerierung bei der Übergabe und dem Vergleich von UInt16-Werten

Details

Aufgrund von Änderungen, die in .NET Framework 4.7 eingeführt wurden, vergleicht der Code, der vom JIT-Compiler generiert wird, in Anwendungen, die unter .NET Framework 4.7 ausgeführt werden, manchmal zwei T:System.UInt16-Werte fehlerhaft miteinander. Weitere Informationen finden Sie unter Issue #11508: Silent bad codegen when passing and comparing ushort args (Problem #11508: Lautlose, ungültige Codegenerierung beim Übergeben und Vergleichen von ushort-Argumenten) unter GitHub.com.

Vorschlag

Wenn Sie beim Vergleichen von unsignierten 16-Bit-Werten in .NET Framework 4.7 auf ein Problem stoßen, führen Sie ein Upgrade auf .NET Framework 4.7.1 aus.

Name Wert
Bereich Microsoft Edge
Version 4.7
Typ Laufzeit

Betroffene APIs

Nicht über API-Analyse erkennbar.

Windows Presentation Foundation (WPF)

Selektor stürzt ab, wenn ein Element aus einer benutzerdefinierten INCC-Sammlung entfernt wird

Details

T:System.InvalidOperationException kann in folgendem Szenario auftreten:

  • Das ItemsSource-Element für T:System.Windows.Controls.Primitives.Selector ist eine Sammlung mit einer benutzerdefinierten Implementierung von T:System.Collections.Specialized.INotifyCollectionChanged.
  • Das ausgewählte Element wird aus der Sammlung entfernt.
  • T:System.Collections.Specialized.NotifyCollectionChangedEventArgs weist den Wert P:System.Collections.Specialized.NotifyCollectionChangedEventArgs.OldStartingIndex=–1 auf, der eine unbekannte Position angibt.

Die Aufrufliste der Ausnahme beginnt at System.Windows.Threading.Dispatcher.VerifyAccess() at System.Windows.DependencyObject.GetValue(DependencyProperty dp) at System.Windows.Controls.Primitives.Selector.GetIsSelected(DependencyObject element). Diese Ausnahme kann in .NET Framework 4.5 auftreten, wenn die Anwendung über mehrere Dispatcher-Threads verfügt. In .NET Framework 4.7 kann diese Ausnahme auch bei Anwendungen mit einem einzelnen Dispatcher-Thread ausgelöst werden.

Dieses Problem wurde in .NET Framework 4.7.1 behoben.

Vorschlag

Upgrade auf .NET Framework 4.7.1

Name Wert
Bereich Gering
Version 4.7
Typ Laufzeit

Betroffene APIs

Nicht über API-Analyse erkennbar.

DataGridCellsPanel.BringIndexIntoView löst ArgumentOutOfRangeException aus

Details

ScrollIntoView(Object) wird asynchron ausgeführt, wenn die Spaltenvirtualisierung zwar aktiviert ist, die Spaltenbreiten aber noch nicht festgelegt wurden. Wenn Spalten entfernt werden, bevor der asynchrone Vorgang abgeschlossen ist, kann eine System.ArgumentOutOfRangeException-Ausnahme auftreten.

Vorschlag

Führen Sie eine der folgenden Aktionen aus:

  • Upgrade auf .NET Framework 4.7
  • Den neuesten Wartungspatch für .NET Framework 4.6.2 installieren
  • Entfernen Sie Spalten erst, wenn die asynchrone Antwort auf die ScrollIntoView(Object) abgeschlossen wurde.
Name Wert
Bereich Microsoft Edge
Version 4.6.2
Typ Laufzeit

Betroffene APIs

Von der WPF-Rechtschreibprüfung ausgelöste ObjectDisposedException-Ausnahme

Details

WPF-Anwendungen stürzen beim Beenden der Anwendung gelegentlich ab. Dabei löst die Rechtschreibprüfung die Ausnahme System.ObjectDisposedException aus. Dies wurde in WPF für .NET Framework 4.7 behoben, indem die Ausnahme ordnungsgemäß verarbeitet wird. Dadurch wird sichergestellt, dass die Anwendungen nicht mehr beeinträchtigt werden. Es ist zu beachten, dass auch weiterhin gelegentlich nicht abgefangene Ausnahmen bei Anwendungen auftreten, die unter einem Debugger ausgeführt werden.

Vorschlag

Upgrade auf .NET Framework 4.7

name Wert
Bereich Microsoft Edge
Version 4.6.1
Typ Laufzeit

Betroffene APIs

Nicht über API-Analyse erkennbar.

Das Ändern der Rastergröße kann dazu führen, dass eine Anwendung nicht mehr reagiert.

Details

Beim Anpassen des Layouts eines T:System.Windows.Controls.Grid-Rasters kann in den folgenden Situationen eine Endlosschleife entstehen:

  • Die Zeilendefinitionen enthalten zwei *-Zeilen, die jeweils einen MinHeight- und einen MaxHeight-Wert angeben.
  • Der Inhalt der *-Zeilen übersteigt den entsprechenden MaxHeight-Wert nicht.
  • Die verfügbare Höhe des Rasters wird durch den ersten MinHeight-Wert (und alle anderen festen oder automatischen Zeilen) überschritten.
  • Die App ist auf .NET Framework 4.7 ausgelegt oder aktiviert den Zuweisungsalgorithmus von Version 4.7 durch Festlegen von Switch.System.Windows.Controls.Grid.StarDefinitionsCanExceedAvailableSpace=false.

Eine Endlosschleife würde auch entstehen, wenn es mehr als zwei Zeilen oder Spalten gäbe. Dieses Problem wurde in .NET Framework 4.7.1 behoben.

Vorschlag

Upgrade auf .NET Framework 4.7.1 Wenn Sie hingegen den .NET 4.7-Zuweisungsalgorithmus nicht benötigen, können Sie auch die folgenden Konfigurationseinstellungen verwenden:

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Windows.Controls.Grid.StarDefinitionsCanExceedAvailableSpace=true" />
</runtime>
Name Wert
Bereich Microsoft Edge
Version 4.7
Typ Laufzeit

Betroffene APIs

Nicht über API-Analyse erkennbar.

In lokalisierten Builds ist der RibbonGroup-Hintergrund auf transparent festgelegt

Details

Der System.Windows.Controls.Ribbon.RibbonGroup-Hintergrund wurde in lokalisierten Builds stets mit einem Pinsel für Transparenzeffekte gezeichnet, was zu einer wenig ansprechenden Benutzeroberfläche führte. Dieses Problem wurde in der .NET Framework 4.7 WPF-Fehlerbehebung behoben, indem die lokalisierten Ressourcen für System.Windows.Controls.Ribbon.RibbonGroup aktualisiert wurden, wodurch sichergestellt wird, dass der richtige Pinsel ausgewählt wird.

Vorschlag

Upgrade auf .NET Framework 4.7

name Wert
Bereich Microsoft Edge
Version 4.6.2
Typ Laufzeit

Betroffene APIs

Nicht über API-Analyse erkennbar.

Update für WPF-Druckstapel

Details

Die Druck-APIs von WPF, die System.Printing.PrintQueue verwenden, rufen nun die Paket-API von Windows zum Drucken von Dokumenten statt der veralteten XPS-Druck-API auf. Diese Änderung wurde für die Wartbarkeit durchgeführt. Weder für Benutzer noch für Entwickler sollten Änderungen im Verhalten oder der API-Nutzung sichtbar werden. Der neue Druckstapel wird bei der Ausführung unter Windows 10 Creators Update standardmäßig aktiviert. Der alte Druckstapel funktioniert in älteren Windows-Versionen weiterhin wie zuvor.

Vorschlag

Legen Sie den UseXpsOMPrinting-REG_DWORD-Wert des HKEY_CURRENT_USER\Software\Microsoft\.NETFramework\Windows Presentation Foundation\Printing-Registrierungsschlüssels auf 1 fest, um den alten Stapel in Windows 10 Creators Update zu verwenden.

Name Wert
Bereich Microsoft Edge
Version 4.7
Typ Laufzeit

Betroffene APIs

Nicht über API-Analyse erkennbar.

Windows Workflow Foundation (WF)

Der Workflow löst jetzt anstelle einer NullReferenceException teilweise eine ursprüngliche Ausnahme aus

Details

In .NET Framework 4.6.2 und früheren Versionen löst die System.Activities-Workflowruntime eine null aus, wenn die Execute-Methode einer Workflowaktivität eine Ausnahme mit einem Message-Wert für die System.NullReferenceException-Eigenschaft auslöst, wodurch die ursprüngliche Ausnahme maskiert wird. In .NET Framework 4.7 wird die zuvor maskierte Ausnahme ausgelöst.

Vorschlag

Wenn Ihr Code von der Verarbeitung von System.NullReferenceException abhängig ist, ändern Sie diesen, um die Ausnahmen zu erfassen, die Ihre benutzerdefinierten Aktivitäten auslösen könnten.

Name Wert
Bereich Gering
Version 4.7
Typ Laufzeit

Betroffene APIs

Über die SQL-Workflowpersistenz werden Primärschlüsselcluster hinzugefügt und NULL-Werte in einigen Spalten nicht zugelassen

Details

Ab .NET Framework 4.7 verwenden die vom SqlWorkflowInstanceStoreSchema.sql-Skript erstellten Tabellen für SQL Workflow Instance Store (SWIS) Primärschlüsselcluster. Aus diesem Grund unterstützen Identitäten keine null-Werte. Diese Änderung hat keine Auswirkungen auf SWIS. Die Updates wurden erstellt, um die Transaktionsreplikation mit SQL Server zu unterstützen.

Vorschlag

Die SQL-Datei „SqlWorkflowInstanceStoreSchemaUpgrade.sql“ muss auf bereits vorgenommene Installationen angewendet werden, damit diese Änderung vorgenommen wird. Bei neuen Datenbankinstallationen werden die Änderungen automatisch vorgenommen.

Name Wert
Bereich Microsoft Edge
Version 4.7
Typ Laufzeit

Betroffene APIs

Nicht über API-Analyse erkennbar.

.NET Framework 4.7.1

JIT

Falsche Codegenerierung bei der Übergabe und dem Vergleich von UInt16-Werten

Details

Aufgrund von Änderungen, die in .NET Framework 4.7 eingeführt wurden, vergleicht der Code, der vom JIT-Compiler generiert wird, in Anwendungen, die unter .NET Framework 4.7 ausgeführt werden, manchmal zwei T:System.UInt16-Werte fehlerhaft miteinander. Weitere Informationen finden Sie unter Issue #11508: Silent bad codegen when passing and comparing ushort args (Problem #11508: Lautlose, ungültige Codegenerierung beim Übergeben und Vergleichen von ushort-Argumenten) unter GitHub.com.

Vorschlag

Wenn Sie beim Vergleichen von unsignierten 16-Bit-Werten in .NET Framework 4.7 auf ein Problem stoßen, führen Sie ein Upgrade auf .NET Framework 4.7.1 aus.

Name Wert
Bereich Microsoft Edge
Version 4.7
Typ Laufzeit

Betroffene APIs

Nicht über API-Analyse erkennbar.

Sicherheit

„RSACng“ und „DSACng“ sind in Szenarios mit teilweiser Vertrauenswürdigkeit wieder verwendbar

Details

CngLightup (das in einigen Krypto-APIs auf höherer Ebene verwendet wird, z.B. System.Security.Cryptography.Xml.EncryptedXml) und System.Security.Cryptography.RSACng erfordern in einigen Fällen volles Vertrauen. Dazu zählen P/Invoke-Aufrufe ohne gewährte SecurityPermissionFlag.UnmanagedCode-Berechtigungen sowie Codepfade, bei denen System.Security.Cryptography.CngKey eine Berechtigungsanforderung für SecurityPermissionFlag.UnmanagedCode aufweist. Ab .NET Framework 4.6.2 wurde „CngLightup“ verwendet, um nach Möglichkeit zu System.Security.Cryptography.RSACng zu wechseln. In Folge schlugen teilweise vertrauenswürdige Apps fehl, die System.Security.Cryptography.Xml.EncryptedXml erfolgreich verwendeten, und lösten SecurityException-Ausnahmen aus. Durch diese Änderungen werden die erforderlichen Berechtigungen hinzugefügt, sodass alle Funktionen, die „CngLightup“ verwenden, über die erforderlichen Berechtigungen verfügen.

Vorschlag

Wenn diese Änderung in .NET Framework 4.6.2 sich negativ auf Ihre teilweise vertrauenswürdigen Apps ausgewirkt hat, führen Sie ein Upgrade auf .NET Framework 4.7.1 durch.

Name Wert
Bereich Microsoft Edge
Version 4.6.2
Typ Laufzeit

Betroffene APIs

Windows Communication Foundation (WCF)

Der WCF-Konstruktor AddressHeaderCollection löst jetzt eine ArgumentException aus, wenn ein addressHeader-Element den Wert NULL aufweist

Details

Ab .NET Framework 4.7.1 löst der AddressHeaderCollection(IEnumerable<AddressHeader>)-Konstruktor eine ArgumentException aus, wenn ein Element den Wert null aufweist. In .NET Framework 4.7 und früheren Versionen wird keine Ausnahme ausgelöst.

Vorschlag

Wenn Kompatibilitätsprobleme durch diese Änderung an .NET Framework 4.7.1 oder höher auftreten, können Sie diese deaktivieren, indem Sie folgende Zeile zum Abschnitt <runtime> Ihrer Datei „App.config“ hinzufügen:

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.ServiceModel.DisableAddressHeaderCollectionValidation=true" />
  </runtime>
</configuration>
name Wert
Bereich Gering
Version 4.7.1
Typ Laufzeit

Betroffene APIs

Der WCF-Standardwert MsmqSecureHashAlgorithm ist jetzt SHA256

Details

Ab .NET Framework 4.7.1 ist SHA256 der Standardalgorithmus zum Signieren von Msmq-Nachrichten in WCF. In .NET Framework 4.7 und früheren Versionen ist SHA1 der Standardalgorithmus zum Signieren von Nachrichten.

Vorschlag

Wenn Kompatibilitätsprobleme durch diese Änderung an .NET Framework 4.7.1 oder höher auftreten, können Sie diese beseitigen, indem Sie folgende Zeile zum Abschnitt <runtime> Ihrer app.config-Datei hinzufügen:

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.ServiceModel.UseSha1InMsmqEncryptionAlgorithm=true" />
  </runtime>
</configuration>
name Wert
Bereich Gering
Version 4.7.1
Typ Laufzeit

Betroffene APIs

Nicht über API-Analyse erkennbar.

Die PipeConnection.GetHashAlgorithm-Methode von WCF verwendet nun SHA256

Details

Ab .NET Framework 4.7.1 verwendet Windows Communication Foundation einen SHA256-Hash, um zufällige Namen für Named Pipes zu generieren. In .NET Framework 4.7 und früheren Versionen wurde ein SHA1-Hash verwendet.

Vorschlag

Wenn Kompatibilitätsprobleme durch diese Änderung an .NET Framework 4.7.1 oder höher auftreten, können Sie diese deaktivieren, indem Sie folgende Zeile zum Abschnitt <runtime> Ihrer App.config-Datei hinzufügen:

<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.ServiceModel.UseSha1InPipeConnectionGetHashAlgorithm=true" />
  </runtime>
</configuration>
name Wert
Bereich Gering
Version 4.7.1
Typ Laufzeit

Betroffene APIs

Nicht über API-Analyse erkennbar.

Windows Presentation Foundation (WPF)

Verkettete Popups mit „StaysOpen=FALSE“

Details

Ein Popup mit „StaysOpen=FALSE“ sollte geschlossen werden, wenn Sie außerhalb des Popups klicken. Wenn zwei oder mehr Popups verkettet sind (d.h. ein Popup enthält ein anderes), treten viele Probleme auf, unter anderem folgende:

  • Öffnen Sie zwei Ebenen. Klicken Sie außerhalb von P2, aber innerhalb von P1. Es geschieht nichts.
  • Öffnen Sie zwei Ebenen. Klicken Sie außerhalb von P1. Beide Popups werden geschlossen.
  • Öffnen und schließen Sie zwei Ebenen. Versuchen Sie dann, P2 erneut zu öffnen. Es geschieht nichts.
  • Versuchen Sie, drei Ebenen zu öffnen. Dies ist nicht möglich. (Je nachdem, wo Sie klicken, geschieht entweder nichts oder die ersten zwei Ebenen werden geschlossen.)

Diese Fälle (und andere Varianten) funktionieren nun wie erwartet.

Name Wert
Bereich Microsoft Edge
Version 4.7.1
Typ Laufzeit

Betroffene APIs

Selektor stürzt ab, wenn ein Element aus einer benutzerdefinierten INCC-Sammlung entfernt wird

Details

T:System.InvalidOperationException kann in folgendem Szenario auftreten:

  • Das ItemsSource-Element für T:System.Windows.Controls.Primitives.Selector ist eine Sammlung mit einer benutzerdefinierten Implementierung von T:System.Collections.Specialized.INotifyCollectionChanged.
  • Das ausgewählte Element wird aus der Sammlung entfernt.
  • T:System.Collections.Specialized.NotifyCollectionChangedEventArgs weist den Wert P:System.Collections.Specialized.NotifyCollectionChangedEventArgs.OldStartingIndex=–1 auf, der eine unbekannte Position angibt.

Die Aufrufliste der Ausnahme beginnt at System.Windows.Threading.Dispatcher.VerifyAccess() at System.Windows.DependencyObject.GetValue(DependencyProperty dp) at System.Windows.Controls.Primitives.Selector.GetIsSelected(DependencyObject element). Diese Ausnahme kann in .NET Framework 4.5 auftreten, wenn die Anwendung über mehrere Dispatcher-Threads verfügt. In .NET Framework 4.7 kann diese Ausnahme auch bei Anwendungen mit einem einzelnen Dispatcher-Thread ausgelöst werden.

Dieses Problem wurde in .NET Framework 4.7.1 behoben.

Vorschlag

Upgrade auf .NET Framework 4.7.1

Name Wert
Bereich Gering
Version 4.7
Typ Laufzeit

Betroffene APIs

Nicht über API-Analyse erkennbar.

Das Ändern der Rastergröße kann dazu führen, dass eine Anwendung nicht mehr reagiert.

Details

Beim Anpassen des Layouts eines T:System.Windows.Controls.Grid-Rasters kann in den folgenden Situationen eine Endlosschleife entstehen:

  • Die Zeilendefinitionen enthalten zwei *-Zeilen, die jeweils einen MinHeight- und einen MaxHeight-Wert angeben.
  • Der Inhalt der *-Zeilen übersteigt den entsprechenden MaxHeight-Wert nicht.
  • Die verfügbare Höhe des Rasters wird durch den ersten MinHeight-Wert (und alle anderen festen oder automatischen Zeilen) überschritten.
  • Die App ist auf .NET Framework 4.7 ausgelegt oder aktiviert den Zuweisungsalgorithmus von Version 4.7 durch Festlegen von Switch.System.Windows.Controls.Grid.StarDefinitionsCanExceedAvailableSpace=false.

Eine Endlosschleife würde auch entstehen, wenn es mehr als zwei Zeilen oder Spalten gäbe. Dieses Problem wurde in .NET Framework 4.7.1 behoben.

Vorschlag

Upgrade auf .NET Framework 4.7.1 Wenn Sie hingegen den .NET 4.7-Zuweisungsalgorithmus nicht benötigen, können Sie auch die folgenden Konfigurationseinstellungen verwenden:

<runtime>
  <AppContextSwitchOverrides value="Switch.System.Windows.Controls.Grid.StarDefinitionsCanExceedAvailableSpace=true" />
</runtime>
Name Wert
Bereich Microsoft Edge
Version 4.7
Typ Laufzeit

Betroffene APIs

Nicht über API-Analyse erkennbar.

.NET Framework 4.7.2

Kernspeicher

Zulassen von Unicode in URIs, die UNC-Freigaben ähneln

Details

In System.Uri führt das Erstellen eines Datei-URI, der sowohl einen UNC-Freigabenamen als auch Unicode-Zeichen enthält, nicht mehr zu einem URI mit ungültigem internen Status. Das Verhalten ändert sich erst, wenn alle folgenden Punkte erfüllt sind:

  • Der URI hat das Schema file:, auf das vier oder mehr Schrägstriche folgen.
  • Der Hostname beginnt mit einem Unterstrich oder anderem nicht reservierten Symbol.
  • Der URI enthält Unicode-Zeichen.

Vorschlag

Anwendungen, die mit URIs arbeiten, die durchgängig Unicode enthalten, hätten dieses Verhalten möglicherweise nutzen können, um Verweise auf UNC-Freigaben zu unterbinden. Diese Anwendungen sollten stattdessen IsUnc verwenden.

name Wert
Bereich Microsoft Edge
Version 4.7.2
Typ Laufzeit

Betroffene APIs

Unterstützen einer besonderen relativen URI-Notation, wenn Unicode vorhanden ist

Details

Uri löst keine NullReferenceException mehr aus, wenn TryCreate für bestimmte relative URIs, die Unicode enthalten, aufgerufen wird. Am einfachsten können Sie die NullReferenceException mit dem folgenden Code selbst nachvollziehen. Beide Anweisungen sind gleichwertig:

bool success = Uri.TryCreate("http:%C3%A8", UriKind.RelativeOrAbsolute, out Uri href);
bool success = Uri.TryCreate("http:è", UriKind.RelativeOrAbsolute, out Uri href);

Zum Reproduzieren der NullReferenceException müssen die folgenden Punkte zutreffen:

  • Der URI muss als relativ angegeben werden, indem ihm „http:“ vorangestellt wird, anstatt dass „//“ auf ihn folgt.
  • Die URI muss als Prozentwert codiertes Unicode oder nicht reservierte Symbole enthalten.

Vorschlag

Benutzer, die zum Unterbinden relativer URIs von diesem Verhalten abhängig sind, sollten stattdessen beim Erstellen eines URI UriKind.Absolute angeben.

name Wert
Bereich Microsoft Edge
Version 4.7.2
Typ Laufzeit

Betroffene APIs

Laufzeit

Verbesserte WCF-Zertifikatkettenüberprüfung für die Net.Tcp-Zertifikatauthentifizierung

Details

.NET Framework 4.7.2 verbessert die Zertifikatkettenüberprüfung, wenn Zertifikatauthentifizierung mit Transportsicherheit mit WCF verwendet wird. Durch diese Verbesserung müssen Clientzertifikate, die verwendet werden, um die Authentifizierung mit einem Server auszuführen, für Clientauthentifizierung konfiguriert werden. Entsprechend müssen auch Serverzertifikate, die zur Authentifizierung eines Servers dienen, für Serverauthentifizierung konfiguriert werden. Wenn das Stammzertifikat deaktiviert ist, schlägt die Überprüfung der Zertifikatkette aufgrund dieser Änderung fehl. Für .NET Framework 3.5 und höhere Versionen wurde über das Windows-Sicherheitsrollup die gleiche Änderung vorgenommen. Weitere Informationen finden Sie hier. Diese Änderung ist standardmäßig aktiviert und kann durch eine Konfigurationseinstellung deaktiviert werden.

Vorschlag

  • Überprüfen Sie, ob Ihre Server- und Clientzertifizierung über die erforderliche EKU-OID verfügt. Wenn dies nicht der Fall ist, aktualisieren Sie Ihre Zertifizierung.

  • Überprüfen Sie, ob Ihr Stammzertifikat ungültig ist. Wenn dies der Fall ist, aktualisieren Sie das Stammzertifikat.

  • Wenn Sie das Zertifikat nicht aktualisieren können, können Sie diesen Breaking Change vorübergehend mit der folgenden Konfigurationseinstellung umgehen. Wenn Sie sich jedoch gegen die Änderung entscheiden, bleibt Ihr System anfällig für das Sicherheitsproblem.

    <appSettings>
      <add key="wcf:useLegacyCertificateUsagePolicy" value="true" />
    </appSettings>
    
Name Wert
Bereich Gering
Version 4.7.2
Typ Laufzeit

Betroffene APIs

Nicht über API-Analyse erkennbar.

Webanwendungen

Die App-Einstellung „dataAnnotations:dataTypeAttribute:disableRegEx“ ist in .NET Framework 4.7.2 standardmäßig aktiviert.

Details

In .NET Framework 4.6.1 wurde die App-Einstellung dataAnnotations:dataTypeAttribute:disableRegEx eingeführt, mir der Benutzer die Verwendung regulärer Ausdrücke in Datentypattributen (z.B. System.ComponentModel.DataAnnotations.EmailAddressAttribute, System.ComponentModel.DataAnnotations.UrlAttribute und System.ComponentModel.DataAnnotations.PhoneAttribute) deaktivieren können. So können Sicherheitsrisiken wie mögliche Denial-of-Service-Angriffe mit bestimmten regulären Ausdrücken gesenkt werden.
In .NET Framework 4.6.1 war diese App-Einstellung zur Verwendung von regulären Ausdrücken standardmäßig auf false festgelegt. Ab .NET Framework 4.7.2 ist dieser Konfigurationsparameter standardmäßig auf true festgelegt, um Sicherheitsrisiken für Webanwendungen für .NET Framework 4.7.2 und höher weiter zu senken.

Vorschlag

Wenn regulärer Ausdrücke in Ihrer Webanwendung nach dem Upgrade auf .NET Framework 4.7.2 nicht mehr funktionieren, können Sie den Wert der Einstellung dataAnnotations:dataTypeAttribute:disableRegEx in false ändern, um wieder das alte Verhalten zu verwenden.

<configuration>
<appSettings>
...
<add key="dataAnnotations:dataTypeAttribute:disableRegEx" value="false"/>
...
</appSettings>
</configuration>
name Wert
Bereich Gering
Version 4.7.2
Typ Laufzeit

Betroffene APIs

Nicht über API-Analyse erkennbar.

Windows Presentation Foundation (WPF)

Besseres KeyTips-Verhalten in WPF

Details

Das Keytips-Verhalten wurde so geändert, dass es dem Verhalten von Microsoft Word und Windows Explorer entspricht. Indem überprüft wird, ob der Keytip-Status aktiviert ist oder nicht, wenn SystemKey (insbesondere Key oder F11) gedrückt wird, behandelt WPF die Keytip-Tasten entsprechend. Keytips verwerfen nun ein Menü, auch wenn es mit der Maus geöffnet wird.

Vorschlag

Nicht zutreffend

name Wert
Bereich Microsoft Edge
Version 4.7.2
Typ Laufzeit

Betroffene APIs

Nicht über API-Analyse erkennbar.