﻿# 如何快速查詢 web.config 中各項設定參數的預設值

昨天有朋友問我一個 ASP.NET 的問題，他說他利用 [FormsAuthentication.Authenticate](http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.authenticate.aspx) 方法驗證使用者帳號、密碼，而且在 web.config 中設定了使用者的登入帳號、密碼，密碼直接用「明碼」表示，但卻怎樣都無法登入成功，這時我就想到應該是他忽略 web.config 中 [credentials](http://msdn.microsoft.com/zh-tw/library/e01fc50a\(VS.80\).aspx) 的預設屬性值。

他的 web.config 中的 [credentials](http://msdn.microsoft.com/zh-tw/library/e01fc50a\(VS.80\).aspx) 設定如下：

```
<configuration>
   <system.web>
      <authentication mode="Forms">
         <forms loginUrl="/login.aspx">
            <credentials>
               <user 
                  name="UserName1" 
                  password="PlainTextPassword"/>
            </credentials>
         </forms>
      </authentication>
   </system.web>
</configuration>
```

他忽略了 [credentials](http://msdn.microsoft.com/zh-tw/library/e01fc50a\(VS.80\).aspx) 中的 passwordFormat 屬性預設值為 SHA1 編碼，並不是 Clear (明碼)，所以才會永遠登入失敗。

像是這類的預設值，我通常不會上 MSDN 查詢，而是直接開啟 .NET Framework 中所附的一個 web.config 預設說明檔，用這個檔案來查詢各種參數的預設值非常的快速，不用上網就能查，而且每台有安裝 .NET Framework 的電腦都有。預設檔案路徑如下：

```
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config.comments
```

這個檔案除了可以看見 web.config 的所有預設屬性值外，還可以看見所有屬性可能出現的所有選項值，只要你對該設定有一定程度的瞭解，通常就可以一目了然的立即反應你可以設定的值，不用每次都上網閱讀龐雜的 MSDN 文件。如下圖示：

![web.config.comments 除了可以看見 web.config 的所有預設屬性值外，還可以看見所有屬性可能出現的所有選項值，只要你對該設定有一定程度的瞭解，通常就可以一目了然的立即反應你可以設定的值，不用每次都上網閱讀龐雜的 MSDN 文件](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/478294b65fdd619ff9e2-image_3.png "web.config.comments 除了可以看見 web.config 的所有預設屬性值外，還可以看見所有屬性可能出現的所有選項值，只要你對該設定有一定程度的瞭解，通常就可以一目了然的立即反應你可以設定的值，不用每次都上網閱讀龐雜的 MSDN 文件")

以我朋友問我的問題來說，只要將 web.config 修改成如下的設定即可：

```
<configuration>
   <system.web>
      <authentication mode="Forms">
         <forms loginUrl="/login.aspx">
            <credentials passwordFormat="Clear">
               <user 
                  name="UserName1" 
                  password="PlainTextPassword"/>
            </credentials>
         </forms>
      </authentication>
   </system.web>
</configuration>
```

相對的，除了 web.config.comment 可以進行查閱外，對於整台主機預設的 machine.config.comments 設定檔也可以在 C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\CONFIG 目錄下找到，都可以做為開發時期方便的參考依據。

**相關連結**

-   [驗證表單的 credentials 項目 (ASP.NET 設定結構描述)](http://msdn.microsoft.com/zh-tw/library/e01fc50a\(VS.80\).aspx)
-   [FormsAuthentication.Authenticate 方法](http://msdn.microsoft.com/zh-tw/library/system.web.security.formsauthentication.authenticate.aspx)
-   [FormsAuthentication.HashPasswordForStoringInConfigFile 方法](http://msdn.microsoft.com/zh-tw/library/system.web.security.formsauthentication.hashpasswordforstoringinconfigfile.aspx)
-   [FormsAuthPasswordFormat 列舉型別](http://msdn.microsoft.com/zh-tw/library/system.web.configuration.formsauthpasswordformat.aspx)
-   [HOW TO：建立 Web.config 檔](http://msdn.microsoft.com/zh-tw/library/k8x4ket8.aspx)
-   [HOW TO：以程式設計的方式檢視繼承的和本機的組態設定](http://msdn.microsoft.com/zh-tw/library/ms228059.aspx)
