.NET Framework (最新版本到.NET Framework 4.7.2)中的新增功能
.NET Framework 4.7.2
在 .NET Framework 4.x
早期版本的基礎之上構建而成,新增了許多修補程式和功能,同時很好地保持了產品的穩定性。
可以通過安裝 .NET Framework 4.7.2
開發人員工具包,在 Visual Studio 2012 或更高版本中定位 .NET Framework 4.7.2
。
.NET Framework 4.7.2 中的新增功能
.NET Framework 4.7.2
在以下幾個領域新增了功能:
核心
ASP.NET 2.0
網路連線
SQL
WPF
ClickOnce
.NET Framework 4.7.2
持續關注的重點是輔助功能的改進,使應用程式能為輔助技術的使用者提供最佳體驗。 有關 .NET Framework 4.7.2
中輔助功能改進的資訊,請參閱 .NET Framework
中輔助功能的新增功能。
核心
.NET Framework 4.7.2
提供大量的加密增強功能、對 ZIP
存檔更好的解壓縮支援以及額外的集合 API。
RSA.Create
和 DSA.Create
的新過載
利用 DSA.Create(DSAParameters)
和 RSA.Create(RSAParameters)
方法,可在例項化新的 DSA
或 RSA
金鑰時提供金鑰引數。 它們允許你替換如下所示的程式碼:
//在.NET Framework 4.7.2之前
using (RSA rsa = RSA.Create())
{
rsa.ImportParameters(rsaParameters);
//使用RSA例項執行的其他程式碼
}
採用類似如下所示的程式碼:
//從.NET Framework 4.7.2開始
using (RSA rsa = RSA.Create(rsaParameters))
{
//使用rsa例項執行的其他程式碼
}
DSA.Create(Int32)
和 RSA.Create(Int32)
方法允許生成具有特定金鑰大小的 DSA
或 RSA
金鑰。 例如:
using (DSA dsa = DSA.Create(2048))
{
// Other code to execute using the dsa instance.
}
Rfc2898DeriveBytes
建構函式接受雜湊演算法名稱
Rfc2898DeriveBytes
類具有三個帶 HashAlgorithmName
引數的建構函式,該引數標識在派生金鑰時使用的 HMAC
演算法。 與 SHA-1
相比,開發人員應使用基於 SHA-2
的 HMAC
,例如 SHA-256
,如下面的示例所示:
private static byte[] DeriveKey(string password, out int iterations, out byte[] salt,
out HashAlgorithmName algorithm)
{
iterations = 100000;
algorithm = HashAlgorithmName.SHA256;
const int SaltSize = 32;
const int DerivedValueSize = 32;
using (Rfc2898DeriveBytes pbkdf2 = new Rfc2898DeriveBytes(password, SaltSize,
iterations, algorithm))
{
salt = pbkdf2.Salt;
return pbkdf2.GetBytes(DerivedValueSize);
}
}
臨時金鑰支援
PFX
匯入可以選擇繞過硬碟直接從記憶體載入私鑰。 如果在 X509Certificate2
建構函式或 X509Certificate2.Import
方法的其中一個過載中指定了新的 X509KeyStorageFlags.EphemeralKeySet
標記,則私鑰將載入為臨時金鑰。 這能防止金鑰在磁碟上可見。 但是:
- 由於金鑰不會保留到磁碟,最好不要將通過此標記載入的證書新增到
X509Store
。 - 以這種方式載入的金鑰大多都是通過
Windows CNG
載入的。 因此,呼叫方必須通過呼叫擴充套件方法訪問私鑰,例如
cert.GetRSAPrivateKey()
。X509Certificate2.PrivateKey
屬性不起作用。 - 由於舊的
X509Certificate2.PrivateKey
屬性對證書不起作用,開發人員應在切換至臨時金鑰之前執行嚴密的測試。
PKCS#10
證書籤名請求和X.509
公鑰證書的程式設計式建立
從 .NET Framework 4.7.2
開始,工作負載可以生成證書籤名請求 (CSR
),這允許將證書請求生成分階到現有工具中。 這在測試方案中常常很有用。
有關詳細資訊和程式碼示例,請參閱 .NET 部落格中的“PKCS#10 證書籤名請求和 X.509 公鑰證書的程式設計式建立
”。
新的 SignerInfo
成員
從 .NET Framework 4.7.2
開始,SignerInfo
類將公開更多有關簽名的資訊。 你可以檢索 System.Security.Cryptography.Pkcs.SignerInfo.SignatureAlgorithm
屬性的值,以確定簽名者採用的簽名演算法。 可以呼叫 SignerInfo.GetSignature
來獲取此簽名者的加密簽名副本。
在 CryptoStream
釋放後保持包裝流開啟
從 .NET Framework 4.7.2
開始,CryptoStream
類有了一個額外的建構函式可允許 Dispose
不關閉包裝流。 若要在釋放 CryptoStream
例項後保持包裝流的開啟狀態,請呼叫新的 CryptoStream
建構函式,如下所示:
var cStream = new CryptoStream(stream, transform, mode, leaveOpen: true);
DeflateStream
中的解壓縮更改
從 .NET Framework 4.7.2
開始,DeflateStream
類中的解壓縮操作的實現變為預設使用本機 Windows API
。 這樣通常能大大地提高效能。
對於面向 .NET Framework 4.7.2
的應用程式,預設啟用通過使用 Windows API
進行解壓縮的支援。 對於面向舊版 .NET Framework
但在 .NET Framework 4.7.2
下執行的應用程式,可以將以下 AppContext
開關新增到應用程式配置檔案,從而選擇啟用此行為:
額外的集合 API
.NET Framework 4.7.2
將一些新 API
新增到 SortedSet<T>
和 HashSet<T>
型別。 這些方法包括:
-
TryGetValue
方法,將其他集合型別中使用的嘗試模式擴充套件到了這兩種型別中。 這兩個方法是:public bool HashSet.TryGetValue(T equalValue, out T actualValue)
public bool SortedSet.TryGetValue(T equalValue, out T actualValue)
-
Enumerable.To*
擴充套件方法,將集合轉換為HashSet<T>
:public static HashSet ToHashSet(this IEnumerable source)
public static HashSet ToHashSet(this IEnumerable source, IEqualityComparer comparer)
-
新的
HashSet<T>
建構函式,讓你設定集合容量,可以在提前知道HashSet<T>
大小的情況下提升效能:public HashSet(int capacity)
public HashSet(int capacity, IEqualityComparer comparer)
ConcurrentDictionary<TKey,TValue>
類包含 AddOrUpdate
和 GetOrAdd
方法的新過載,以便在詞典中檢索值或新增找不到的值,以及將值新增到詞典或者更新已存在的值。
public TValue AddOrUpdate<TArg>(TKey key, Func<TKey, TArg, TValue> addValueFactory, Func<TKey, TValue, TArg, TValue> updateValueFactory, TArg factoryArgument)
public TValue GetOrAdd<TArg>(TKey key, Func<TKey, TArg, TValue> valueFactory, TArg factoryArgument)
Web 窗體中的依賴項注入支援
依賴項注入 (DI) 分離物件和它們的依賴項,使得物件的程式碼不再僅因依賴項更改而需要進行更改。 在開發面向 .NET Framework 4.7.2
的 ASP.NET
應用程式時,可以:
- 在處理程式和模組、頁面例項和 ASP.NET Web 應用程式專案的使用者控制元件中使用基於資源庫、基於介面和基於建構函式的注入。
- 在處理程式和模組、頁面例項和 ASP.NET 網站專案的使用者控制元件中使用基於資源庫和基於介面的注入。
- 插入不同的依賴關係注入框架。
同站點 cookie
支援
SameSite
防止瀏覽器將 cookie
和跨站點請求一起傳送。 .NET Framework 4.7.2
新增了一個值為 System.Web.SameSiteMode
列舉成員的 HttpCookie.SameSite
屬性。 如果它的值為 SameSiteMode.Strict
或 SameSiteMode.Lax
,ASP.NET 將 SameSite
屬性新增到 set-cookie
標頭。 SameSite
支援適用於 HttpCookie
物件,以及 FormsAuthentication
和 System.Web.SessionState cookie
。
可以為 HttpCookie
物件設定 SameSite
,如下所示:
var c = new HttpCookie("secureCookie", "same origin");
c.SameSite = SameSiteMode.Lax;
還可以通過修改 web.config
檔案,在應用程式級別配置 SameSite cookie
:
<system.web>
<httpCookies sameSite="Strict" />
</system.web>
通過修改 Web
配置檔案,可以為 FormsAuthentication
和 System.Web.SessionState cookie
新增 SameSite
:
<system.web>
<authentication mode="Forms">
<forms cookieSameSite="Lax">
<!-- ... -->
</forms>
<authentication />
<sessionSate cookieSameSite="Lax"></sessionState>
</system.web>
網路
HttpClientHandler
屬性的實現
.NET Framework 4.7.1
將八個屬性新增到了 System.Net.Http.HttpClientHandler
類。 不過其中有兩個會引發 PlatformNotSupportedException
。 .NET Framework 4.7.2
現在為這些屬性提供實現。 這些屬性為:
- CheckCertificateRevocationList
- SslProtocols
SQLClient
對 Azure Active Directory
通用身份驗證和多重身份驗證的支援
不斷增加的符合性和安全性需求讓很多客戶需要使用多重身份驗證 (MFA)。 此外,當前的最佳做法不鼓勵在連線字串中直接包含使用者密碼。 為了支援這些更改,.NET Framework 4.7.2
通過新增新值“Active Directory Interactive
”擴充套件了 SQLClient 連線字串,讓現有“身份驗證”關鍵字支援 MFA 和 Azure AD 身份驗證。 新的互動式方法支援本機和聯合 Azure AD 使用者以及 Azure AD
來賓使用者。 使用此方法時,SQL 資料庫將支援由 Azure AD
施加的 MFA
身份驗證。 此外,為了遵循安全最佳做法,身份驗證流程會請求使用者密碼。
在以前版本的 .NET Framework
中,SQL 連線只支援 SqlAuthenticationMethod.ActiveDirectoryPassword
和 SqlAuthenticationMethod.ActiveDirectoryIntegrated
選項。 兩者都是非互動式 ADAL
協議的一部分,而該協議不支援 MFA
。 利用新的 SqlAuthenticationMethod.ActiveDirectoryInteractive
選項,SQL
連線可支援 MFA
以及現有身份驗證方法(密碼和整合身份驗證),讓使用者可以互動式地輸入使用者密碼,而無需將密碼存留在連線字串中。
有關詳細資訊和示例,請參閱 .NET 部落格中的“SQL - Azure AD 通用和多重身份驗證支援”。
Always Encrypted
版本 2 的支援
NET Framework 4.7.2
為基於 enclave
的 Always Encrypted
新增支援。 Always Encrypted
的原始版本是客戶端加密技術,其中的加密金鑰不會離開客戶端。 在基於 enclave
的 Always Encrypted
中,客戶端可以選擇將加密金鑰傳送到安全的 enclave,即一個安全的計算實體,該實體可以看作是 SQL Server
的一部分,但 SQL Server
程式碼無法對其進行篡改。 為了支援基於 enclave
的 Always Encrypted
,NET Framework 4.7.2
將以下型別和成員新增到 System.Data.SqlClient
名稱空間:
SqlConnectionStringBuilder.EnclaveAttestationUrl
,為基於enclave
的Always Encrypted
指定 URI。SqlColumnEncryptionEnclaveProvider
,一個抽象類,所有enclave
提供程式都自它派生。SqlEnclaveSession
,封裝給定enclave
會話的狀態。SqlEnclaveAttestationParameters
,提供 SQL Server 所使用的認證引數,以獲取執行特定認證協議所需的資訊。
抽象 System.Data.SqlClient.SqlColumnEncryptionEnclaveProvider
類提供了 enclave
提供程式的功能,應用程式配置檔案隨後會指定該類的具體實現。 例如:
<configuration>
<configSections>
<section name="SqlColumnEncryptionEnclaveProviders" type="System.Data.SqlClient.SqlColumnEncryptionEnclaveProviderConfigurationSection,System.Data,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"/>
</configSections>
<SqlColumnEncryptionEnclaveProviders>
<providers>
<add name="Azure" type="Microsoft.SqlServer.Management.AlwaysEncrypted.AzureEnclaveProvider,MyApp"/>
<add name="HGS" type="Microsoft.SqlServer.Management.AlwaysEncrypted.HGSEnclaveProvider,MyApp" />
</providers>
</SqlColumnEncryptionEnclaveProviders >
</configuration>
基於 enclave
的 Always Encrypted
的基本流是:
- 使用者建立與 SQL Server(支援基於 enclave 的
Always Encrypted
)的AlwaysEncrypted
連線。 驅動程式聯絡認證服務以確保它連線到正確的 enclave。 - enclave 驗證成功後,驅動程式將建立與託管在 SQL Server 上的安全 enclave 之間的安全通道。
- 在 SQL 連線期間,驅動程式與安全
enclave
共享由客戶端授權的加密金鑰。
Windows Presentation Foundation
按源查詢 ResourceDictionaries
從 .NET Framework 4.7.2
開始,診斷助手可以找到從給定源 URI 建立的 ResourceDictionaries
。 (此功能通過診斷助手使用,而非生產應用程式。)診斷助手(例如 Visual Studio 的“編輯並繼續”)讓使用者可以編輯 ResourceDictionary
以將更改應用到正在執行的應用程式。 要實現這一點,其中一個步驟是從被編輯的字典中找到正在執行的應用程式建立的所有 ResourceDictionaries
。 例如,應用程式可以宣告某個從給定源 URI 複製內容的 ResourceDictionary
:
<ResourceDictionary Source="MyRD.xaml">
編輯 MyRD.xaml
中的原始標記的診斷助手可以使用新功能來找到字典。 此功能通過新的靜態方法 ResourceDictionaryDiagnostics.GetResourceDictionariesForSource
實現。 診斷助手使用標識原始標記的絕對 URI
呼叫新方法,如以下程式碼所示:
IEnumerable<ResourceDictionary> dictionaries = ResourceDictionaryDiagnostics.GetResourceDictionariesForSource(new Uri("pack://application:,,,/MyApp;component/MyRD.xaml"));
該方法返回空的列舉值,除非啟用了 VisualDiagnostics
並且設定了 ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO
環境變數。
查詢 ResourceDictionary
所有者
從 .NET Framework 4.7.2
開始,診斷助手可以找到給定 ResourceDictionary
的所有者。 (此功能供診斷助手,而非生產應用程式使用。)每當對 ResourceDictionary
做出更改時,WPF 會自動查詢所有可能會受此更改影響的 DynamicResource
引用。
診斷助手(例如 Visual Studio 的“編輯並繼續”)可能想對此進行擴充套件以處理 StaticResource
引用。 此過程的第一步是找到字典的所有者,也就是找到其 Resources
屬性引用該字典(不管是直接引用,還是通過 ResourceDictionary.MergedDictionaries
屬性間接引用)的所有物件。 System.Windows.Diagnostics.ResourceDictionaryDiagnostics
類上實現的三個新的靜態方法(每個對應具有 Resources
屬性的基型別)支援此步驟:
public static IEnumerable<FrameworkElement> GetFrameworkElementOwners(ResourceDictionary dictionary);
public static IEnumerable<FrameworkContentElement> GetFrameworkContentElementOwners(ResourceDictionary dictionary);
public static IEnumerable<Application> GetApplicationOwners(ResourceDictionary dictionary);
這些方法返回空的列舉值,除非啟用了 VisualDiagnostics
並且設定了 ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO
環境變數。
查詢 StaticResource
引用
現在,每當一個 StaticResource
引用被解析時,診斷助手都能收到通知。 (此功能供診斷助手,而非生產應用程式使用。)診斷助手(例如 Visual Studio 的“編輯並繼續”)可能想在 ResourceDictionary
中某個資源的值發生更改時更新該資源的所有使用。 WPF 為 DynamicResource
引用自動完成此操作,但不會為 StaticResource
引用有意執行該操作。 從 .NET Framework 4.7.2 開始
,診斷助手可以利用這些通知來查詢靜態資源的使用情況。
該通知由新的 ResourceDictionaryDiagnostics.StaticResourceResolved
事件實現:
public static event EventHandler<StaticResourceResolvedEventArgs> StaticResourceResolved;
每當執行時解析 StaticResource
引用時,都會引發此事件。 StaticResourceResolvedEventArgs
引數描述解析,並指示託管 StaticResource
引用的物件和屬性及用於解析的 ResourceDictionary
和金鑰:
public class StaticResourceResolvedEventArgs : EventArgs
{
public Object TargetObject { get; }
public Object TargetProperty { get; }
public ResourceDictionary ResourceDictionary { get; }
public object ResourceKey { get; }
}
除非啟用 VisualDiagnostics
並設定了 ENABLE_XAML_DIAGNOSTICS_SOURCE_INFO
環境變數,否則不會引發該事件(且忽略它的 add
訪問器)。
ClickOnce
Windows 窗體的 HDPI 感知應用程式、Windows Presentation Foundation (WPF) 以及 Visual Studio Tools for Office (VSTO) 都可以通過使用 ClickOnce
進行部署。 如果在應用程式清單中找到了以下條目,則部署將在 .NET Framework 4.7.2
下成功執行:
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
對於 Windows 窗體應用程式,不需要像以前那樣在應用程式配置檔案(而非應用程式清單)中設定 DPI 感知就可以成功完成 ClickOnce
部署。
.NET Framework 4.7.1
中的新增功能
.NET Framework 4.7.1
在以下幾個領域新增了功能:
核心
公共語言執行時 (CLR)
網路連線
ASP.NET 2.0
此外,.NET Framework 4.7.1
的重點是改進了輔助功能,使應用程式能為輔助技術的使用者提供最佳體驗。 有關 .NET Framework 4.7.1
中輔助功能改進的資訊,請參閱 .NET Framework
中輔助功能的新增功能。
核心
支援 .NET Standard 2.0
.NET Standard
定義一組 API,這些 API 必須可用於支援 Standard
版本的每個 .NET 實現。 .NET Framework 4.7.1
完全支援 .NET Standard 2.0
並增加了 200 個 API,這些 API 在 .NET Standard 2.0
中定義,.NET Framework 4.6.1、4.6.2
和 4.7
中也延續使用。 (請注意,這些版本的 .NET Framework
只有在其他 .NET Standard
支援檔案也部署在目標系統時才支援 .NET Standard 2.0
。)有關詳細資訊,請參閱 .NET Framework 4.7.1 Runtime and Compiler Features
(.NET Framework 4.7.1 執行時和編譯器功能)部落格文章中的“BCL - .NET Standard 2.0 Support
”(BCL - .NET Standard 2.0 支援)。
支援配置生成器
配置生成器允許開發者在執行時動態地插入和生成應用程式的配置設定。 自定義配置生成器可用於修改配置節中的現有資料,也可用於生成全新的配置節。 如果沒有配置生成器,.config
檔案將是靜態的,並且其設定將在應用程式啟動之前定義。
若要建立自定義配置生成器,請從抽象的 ConfigurationBuilder
類派生生成器並且替代其 ConfigurationBuilder.ProcessConfigurationSection
和 ConfigurationBuilder.ProcessRawXml
。 也可在 .config
檔案中定義生成器。 有關詳細資訊,請參閱 .NET Framework 4.7.1 ASP.NET and Configuration Features
(.NET Framework 4.7.1 ASP.NET 和配置功能)部落格文章中的“Configuration Builders
”(配置生成器)一節。
執行時功能檢測
System.Runtime.CompilerServices.RuntimeFeature
類提供一種機制,用於確定給定的 .NET 實現在編譯時或執行時是否支援預定義的功能。 在編譯時,編譯器可以檢查指定的欄位是否存在,以確定是否支援某項功能,如果支援,它會發出利用這一功能的程式碼。 在執行時,應用程式可以在執行時發出程式碼之前呼叫 RuntimeFeature.IsSupported
方法。 有關詳細資訊,請參閱 Add helper method to describe features supported by the runtime
(新增 helper 方法以描述執行時支援的功能)。
值元組型別是可序列化的
從 .NET Framework 4.7.1
起,System.ValueTuple
及其相關的泛型型別被標記為可序列化,允許進行二進位制序列化。 這樣,可以更輕鬆地將元組型別(如 Tuple<T1,T2,T3>
和 Tuple<T1,T2,T3,T4>
)遷移到值元組型別。 有關詳細資訊,請參閱 .NET Framework 4.7.1 Runtime and Compiler Features
(.NET Framework 4.7.1 執行時和編譯器功能)部落格文章中的“Compiler – ValueTuple is Serializable”(編譯器 – 值元組是可序列化的)。
支援只讀引用
.NET Framework 4.7.1
增加了 System.Runtime.CompilerServices.IsReadOnlyAttribute
。 此特性由語言編譯器用於標記具有隻讀 ref 返回型別或引數的成員。 有關詳細資訊,請參閱 .NET Framework 4.7.1 Runtime and Compiler Features
(.NET Framework 4.7.1 執行時和編譯器功能)部落格文章中的“Compiler -- Support for ReadOnlyReferences
”(編譯器 – 支援只讀引用)。 有關 ref
返回值的資訊,請參閱 ref
返回值和 ref
區域性變數(C# 指南)和 ref
返回值 (Visual Basic)。
公共語言執行時 (CLR)
垃圾回收效能改進
.NET Framework 4.7.1
中的垃圾回收 (GC
) 的更改提升了整體效能,尤其是大型物件堆 (LOH
) 分配的效能。 在 .NET Framework 4.7.1
中,小型物件堆 (SOH
) 分配和 LOH
分配使用不同的鎖,當後臺 GC (BGC
) 整理 SOH
時即發生 LOH
分配。 這樣,進行大量 LOH
分配的應用程式發生分配鎖爭用的情況將減少,從而提高效能。 有關詳細資訊,請參閱 .NET Framework 4.7.1 Runtime and Compiler Features
(.NET Framework 4.7.1 執行時和編譯器功能)部落格文章中的“Runtime -- GC Performance Improvements
”(執行時 – GC 效能改進)一節。
網路
Message.HashAlgorithm
的 SHA-2
支援
在 .NET Framework 4.7
及早期版本中,Message.HashAlgorithm
屬性僅支援 HashAlgorithm.Md5
和 HashAlgorithm.Sha
的值。 從 .NET Framework 4.7.1 開始,還支援 HashAlgorithm.Sha256
、HashAlgorithm.Sha384
和 HashAlgorithm.Sha512
。 實際是否使用此值取決於訊息佇列,因為 Message
例項本身不進行雜湊處理,而是簡單地將值傳遞到訊息佇列。 有關詳細資訊,請參閱 .NET Framework 4.7.1 ASP.NET and Configuration Features
(.NET Framework 4.7.1 ASP.NET 和配置功能)部落格文章中的“SHA-2 support for Message.HashAlgorithm”(Message.HashAlgorithm 的 SHA-2 支援)一節。
ASP.NET
ASP.NET 應用程式中的執行步驟
ASP.NET
處理包括 23 個事件的預定義管道中的請求。 ASP.NET 執行每個事件處理程式作為一個執行步驟。 對於 .NET Framework 4.7
之前的 ASP.NET 版本,由於本機和託管執行緒之間的切換,ASP.NET 無法傳送執行上下文。 ASP.NET 有選擇性地僅傳送 HttpContext
。 從 .NET Framework 4.7.1
開始,HttpApplication.OnExecuteRequestStep(Action<HttpContextBase,Action>)
方法還允許模組還原環境資料。 此功能針對與跟蹤、分析、診斷或事務(例如應用程式的執行流)相關的庫。 有關詳細資訊,請參閱 .NET Framework 4.7.1 ASP.NET and Configuration Features
(.NET Framework 4.7.1 ASP.NET 和配置功能)部落格文章的“ASP.NET Execution Step Feature”(ASP.NET 執行步驟功能)一節。
ASP.NET HttpCookie
分析
.NET Framework 4.7.1 包括新的方法 HttpCookie.TryParse
,此方法提供標準化的方式來從字串建立 HttpCookie
物件,並精確分配 cookie
值(如過期日期和路徑)。 有關詳細資訊,請參閱 .NET Framework 4.7.1 ASP.NET and Configuration Features
(.NET Framework 4.7.1 ASP.NET 和配置功能)部落格文章中的“ASP.NET HttpCookie parsing”(ASP.NET HttpCookie 分析)一節。
ASP.NET 窗體身份驗證憑據的 SHA-2 雜湊選項
在 .NET Framework 4.7
及其早期版本中,ASP.NET 允許開發者使用 MD5 或 SHA1 在配置檔案中儲存使用者憑據和雜湊密碼。 從 .NET Framework 4.7.1 開始,ASP.NET 還支援新的安全 SHA-2
雜湊選項(如 SHA256、SHA384 和 SHA512)。 SHA1
保留預設值,非預設雜湊演算法可以在 Web 配置檔案中定義。 例如:
XML
<system.web>
<authentication mode="Forms">
<forms loginUrl="~/login.aspx">
<credentials passwordFormat="SHA512">
<user name="jdoe" password="6D003E98EA1C7F04ABF8FCB375388907B7F3EE06F278DB966BE960E7CBBD103DF30CA6D61F7E7FD981B2E4E3A64D43C836A4BEDCA165C33B163E6BCDC538A664" />
</credentials>
</forms>
</authentication>
</system.web>
相關文章
- .NET Framework 3.5 版中的新增功能(6)[整理]Framework
- .NET Framework 3.5 版中的新增功能(5)[整理]Framework
- .NET Framework 3.5 版中的新增功能(4)[整理]Framework
- .NET Framework版本解析Framework
- .NET Framework 新功能和增強的功能Framework
- 重新註冊iis的.NET Framework版本Framework
- .NET Framework 系統版本支援表Framework
- .Net Framework各個版本區別Framework
- .NET Framework 4 和 .NET Framework 4 Client ProfileFrameworkclient
- .Net Framework各版本之間的關係Framework
- .NET Framework 4和.NET Framework 4 Client Profile的區別Frameworkclient
- 使用C#檢驗.NET FrameWork版本C#Framework
- .net各版本framework官方下載地址Framework
- .net framework 5.0Framework
- .NET Framework 工具Framework
- 【C# .Net Framework】在.Net Framework中使用gRPCC#FrameworkRPC
- .NET Framework 的 Quirk VersionFrameworkUI
- .NET 5 中 Target Framework 詳解Framework
- .NET Framework 原始碼Framework原始碼
- .NET Framework 類庫Framework
- NET Framework 類庫Framework
- NET Framework簡介Framework
- 【framework】framework中為systemserver新增許可權FrameworkServer
- 再談Net Framework中的編解碼Framework
- .NET Framework 工具下載Framework
- .NET Framework 4.8釋出Framework
- Framework not found AFNetworkingFramework
- .net framework 3.5 新特性Framework
- microsoft之c# .net framework各版本下載中心ROSC#Framework
- 回顧.NET系列:Framework、Net Core、Net 過往Framework
- 微軟.NET Framework的開源之路微軟Framework
- 低版本的.netFramework專案呼叫高版本的.net framework的dll的解決方法Framework
- .net framework autoMapper使用FrameworkAPP
- .NET Framework 高階開發Framework
- .net Framework Class Library(FCL)Framework
- net framework 3.5怎麼安裝 net framework 3.5無法安裝怎麼辦Framework
- Docker容器中執行.net framework控制檯程式DockerFramework
- .NET Framework 4.5 五個很棒的特性Framework