2018年11月6日 星期二

IIS6 轉 IIS7 的設定對應及IIS7問題




虛擬路徑對應
        towns 有台主機要昇級為 windows 2008 server 64bit,當然就是使用IIS7,但在設定上出現了很大的問題,在 towns 管理的站台有用到虛擬路徑(他是要交由程式aspnet_isapi.dll 處理),可是IIS7 要在哪裡設定非常的頭大,沒設好就會出現這樣的錯誤(http 404錯誤 如圖error.jpg),下面會說明 IIS6 的設定與IIS7設定的對應

        在IIS6 中,到 指定站台按滑鼠右鍵==>內容==>主目錄==>設定==>插入萬用字元應用程式對應,執行檔中放入“C:\WINNT\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”,並取消“確認該檔案是否存在”,如圖iis6set.jpg,設定完成後虛擬路徑會自動交由程式處理,站台就可正常運作了

        在IIS7 中需設定兩個地方

    1. 指定站台==>處理常式對應==>新增萬用字元指令碼對應==>設定執行檔 “C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”(如圖iis7set.jpg),名稱可自定(ASP.NET-ISAPI-2.0-Wildcard)

    2. 應用程式集區 ==>指定集區按滑鼠右鍵 ==>基本設定 ==>將 “Managed 管線模式”改為“傳統”,如圖iis7set2.jpg

    設定完成後,重新啟動指定站台,問題就處理完成

註1:如果像 towns使用64bit 系統,請將C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll,也加入萬用字元指令碼對應

註2:.net 4.0也會有相同的問題

相關資料(感謝小舖SteveT大、點部落gipi大及Ruslan大的資訊提供):

http://learn.iis.net/page.aspx/508/wildcard-script-mapping-and-iis-7-integrated-pipeline/

http://www.dotblogs.com.tw/jimmyyu/archive/2009/10/19/11124.aspx

http://www.blueshop.com.tw/board/FUM20050110200833I8T/BRD20100412140941FQP.html

補充:有些情形下,不要設定註1,才會正常,資料提供:黑炭

啟用上層路徑

IIS6 ==>在指定站台按滑鼠右鍵 ==>內容 ==>主目錄 ==>設定 ==>選項 ==>啟用上層路徑

IIS7 ==>在指定站台 ==>選ASP小圖  ==>啟用上層路徑改為True

建立子站台

IIS6 ==>在指定站台下的目錄按滑鼠右鍵 ==>內容 ==>點“建立”

IIS7 ==>在指定站台下的目錄按滑鼠右鍵 ==>轉換成應用程式

建立虛擬目錄

IIS6 ==>在指定站台按滑鼠右鍵 ==>內容 ==>點“新增”==>虛擬目錄

IIS7 ==>在指定站台按滑鼠右鍵 ==>新增虛擬目錄 ==>打入別名及實體路徑

關於語系設定與變更IIS6 中無此功能

IIS7 有支援多種編碼功能,他的設定在 .NET全球化中

 轉址設定

IIS6 ==>在指定站台按滑鼠右鍵 ==>內容 ==>主目錄 ==>某個URL位置重新導向

IIS7 ==> HTTP重新導向 ==>將要求重新導向目的地

註:IIS7發生了怪怪的問題,當 towns使用重新導向的功能後,有兩個站台,都會重新導向 = =,原來是設定相同目錄造成的問題

Log 檔路徑查尋IIS6 ==>在指定站台按滑鼠右鍵 ==>內容 ==>啟用記錄格式 ==>內容 ==>記錄目錄及 記錄檔名稱

預設路徑:C:\WINDOWS(WINT)\system32\LogFiles\

IIS7 ==>點選指定站台 ==>右框中的記錄 ==>記錄檔 ==>目錄 ==>記錄目錄,記錄檔名稱及資料匣找不到

預設路徑:C:\inetpub\logs\LogFiles\

註1:要確認IIS7 Log檔資料匣,要從 站台==>進階設定==>識別碼

註2:直接點站台,看ID

註3:點紀錄 ==> 檢視紀錄檔,會直接開啟檔案路徑

程式集區選擇IIS6 ==>在指定站台按滑鼠右鍵 ==>內容==>ASP.NET==>ASP.NET version 中選擇

IIS7 ==>應用程式集區 ==>在指定的集區上按滑鼠右鍵 ==>內容 ==>基本設定 ==>.NET Framework 版本

windows server 2008 安ASP.NET 1.1相關連結:http://blogs.iis.net/bills/archive/2008/06/02/installing-asp-net-1-1-with-iis7-on-vista-and-windows-2008.aspx

重新啟動IISIIS6 ==>開啟IIS ==>在[主機名稱](本機電腦)上按滑鼠右鍵==>所有工作==>重新啟動IIS

IIS7 ==>開啟伺服器管理員 ==>角色 ==>網頁伺服器(IIS) ==>在右邊的框中可以看到重新啟動

查看IIS事件IIS6 ==>開啟事件檢示器 ==>應用程式

IIS7 ==>開啟伺服器管理員 ==>點角色 ==>點網頁伺服器(IIS) ==>第一個框,就是所有IIS的事件

一些Blog文章,這些是 towns 在轉移站台所找到的一些資料。感謝每一位無私奉獻的大大們。

1. 簡易說明應用程式集區,Managed 管線模式中的傳統(classic mode)與整合式(integrated mode)的設定與區別,不過 towns並不知道傳統與整合式有什麼差別

http://www.goodman-lai.idv.tw/2009/04/iis-75.html

2. 在昇級時出現中文亂碼問題的處理方式

http://blogs.msdn.com/roberthu/archive/2008/05/28/windows-server-2008-iis-7-0-asp-net.aspx

啟用與匯入憑證方式1. 啟用443 port

IIS6 ==>開啟IIS ==>在指定站台上按滑鼠右鍵==>到網站識別碼==>在SSL連接埠中自己打入443

IIS7 ==>開啟IIS ==>點指定站台 ==>繫結 ==>新增==>類型==>選 https,連接埠自動轉為443

註:如果在IIS7中要測試憑證功能,可以直接選用WMSvc這個假憑證

2. 匯入憑證

IIS6 詳見各家憑證中心

IIS7 詳見保哥資料(http://blog.miniasp.com/post/2010/03/02/The-Complete-Guide-for-Purchase-Install-SSL-Certificate-to-IIS7.aspx)

單一檔案加密IIS6 ==>開啟IIS ==>點指定站台 ==>點指定檔案,按滑鼠右鍵 ==>內容 ==>檔案安全性設定 ==>通訊安全 ==>編輯 ==>勾選“必需使用安全通道(SSL)”,勾選“需要128位元加密”

IIS7 ==>

確認是否有安裝.net 3.5IIS6

 1.新增移除中可以看到。

 2.可以到C:\WINDOWS\Microsoft.NET\Framework\看看,是否有v3.5資料匣

IIS7

 1.伺服器管理員==>角色==>角色服務中,可看到.NET Framework 3.5.1是否已安裝

 2.可以到C:\WINDOWS\Microsoft.NET\Framework\看看,是否有v3.5資料匣

    可以到C:\WINDOWS\Microsoft.NET\Framework64\看看,是否有v3.5資料匣

IE9相容性設定有些網頁使用IE9瀏覽時,會出現CSS異常,可以這樣設定

IIS6

在指定站台按滑鼠右鍵==>「內容」==>「HTTP 標頭」==>「MIME 類型」==>新增 ==>設定副檔名為 .css、MIME類型設為 text/css ==>確定 ==>重新啟動IIS

IIS7

到指定站台 ==>右圖MIME類型 ==> 滑鼠左鍵兩下 ==> 新增 ==>設定副檔名為 .css、MIME類型設為 text/css ==>確定 ==>重新啟動 IIS

資料來源:艾堤科技  流雲

註:IIS7已有設定,不需手動設定

子目錄重新導向IIS6

在子目錄按滑鼠右鍵 ==>內容 ==>這個資源的內容應該來自:這三項依需求選擇,如果是轉址請選 某個URL重新導向,並打下網址後確認

IIS7

點選指定子目錄 ==>右圖中選 HTTP重新導向 ==>勾選 將要求重新導向自此目的地,並打下網址 ==>套用

註:如果在右邊沒有出現 HTTP重新導向,請在 伺服器管理員 ==>角色 ==>新增 HTTP重新導向 的角色服務

關閉特定目錄的執行權限IIS6

點選指定站台按滑鼠右鍵 ==> 內容 ==> 主目錄 ==> 執行權限 ==> 選擇“無”

點選指定虛擬目錄按滑鼠右鍵 ==> 內容 ==> 虛擬目錄 ==> 執行權限 ==> 選擇“無”

IIS7

點選指定站台(虛擬目錄、子目錄)==> 處理常式對應 ==> 開啟功能 ==> 編輯功能權限 ==> 將指令碼勾選取消

資料來源:http://blog.miniasp.com/post/2010/08/04/IIS7-How-to-Turn-off-Execute-Permission.aspx

限制子目錄讀取
IIS6

點選指定子目錄按滑鼠右鍵 ==> 內容 ==> 目錄安全性設定 ==> IP位置及網域名稱限制 ==> 接下就自行設定了

IIS7

點選指定子目錄 ==> IP位置及網域限制 ==> 開啟功能 ==> 點右上方有新增允許項目及新增拒絕項目 ==> 這裡就是自行設定了

註:如果只要指定IP或網段開放讀取,將“編輯功能設定”中“未指定的用戶端存取”設為“拒絕”

關於字型載入問題

字型載入在IIS6與IIS7中有相同的問題,必需重啟動系統(reboot OS),IIS才會將字型吃入。單單重新啟動 IIS 是無效的

IE7相容性設定IIS7

開啟 IIS7 ==> 指定網站 ==> HTTP回應標頭 ==> 名稱:X-UA-Compatible,值:IE=EmulateIE7

IIS6

指定網站 ==> 滑鼠右鍵 內容 ==> HTTP標頭 ==> 自定標頭 新增 ==> 自訂標頭中打入 X-UA-Compatible,自定標頭值打入 IE=EmulateIE7

資料來源:

Will大blog http://blog.miniasp.com/post/2011/02/01/Understanding-Internet-Explorer-8-Compatibility-Technology.aspx

IIS 引用 MSSQL express 問題IIS7 載入MSSQL express 2008 R2需將載入使用者設定檔設為true

應用程式集區(指定名稱)按滑鼠右鍵==> 進階設定==>載入使用者設定檔設為true

IIS6 載入MSSQL express 2005

不需要設定

驗證與指定存取IIS7

指定網站 ==> 驗證 ==> 匿名驗證

IIS6

指定網站 按滑鼠右鍵 ==> 內容 ==> 目錄與安全性設定 ==> 驗證及存取控制

設定檔位置

IIS7

C:\Windows\system32\inetsrv\MetaBase.xml

IIS6

C:\WINNT\system32\inetsrv\MetaBase.xml

開啟與關閉IIS7 32bit 工作者程序towns並不知道這個的用途,不過,看來在開發VB程式時是有必要的處理的

IIS7(使用指令)

1. Disable 32-bit worker processes in IIS running this command:

cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 0

2. Enable 32-bit worker processes in IIS running  this command:

cscript %SystemDrive%\inetpub\AdminScripts\adsutil.vbs set w3svc/AppPools/Enable32bitAppOnWin64 1

資料來源:小舖討論區 Chen大回應

http://www.blueshop.com.tw/board/FUM20050110200833I8T/BRD200902191842477CS.html

IIS7(使用UI)

應用程式集區 ==> 選定要開放32bit應用程式集區 上按滑鼠右鍵 ==> 進階設定 ==> 在 啟用32位元應用程式 設為 true

資料來源:eion大的blog

http://www.eion.com.tw/Blogger/?Pid=1074

IIS6 沒這個問題

流量與連線數限制

IIS7

點選指定站台 ==> 右方“網站管理” ==> 設定 ==> 限制

可同時看到“限制頻寬使用量”及“連線限制”

IIS7的 連線逾時(session time out),是放在這裡

也可以到

點選指定站台 ==> 右方“網站管理” ==> 進階設定 ==> 行為 ==> 連線限制 ==> 設定 同時連線數上限 及 最大頻寬,預設值為 4294967295

註:如果設定了連線限制(同時連線數上限),當超過時,就會出現503錯誤

IIS6

在指定站台上按滑鼠右鍵 ==> 內容 ==> 效能

可同時設定“頻寬節流設定”及“網站連線”

IIS6的 連線逾時(session time out),是放在 網站 ==> 連線

應用程式集區身份識別

IIS7

到 應用程式集區 ==> 選定應用程式集區 ==> 到右邊的 進階設定 ==> 識別

預設使用 ApplicationPoolIdentity 帳號(IIS AppPool\應用程式集區名稱)

這個帳號會造成在修改網頁資料匣安全性時,造成網頁無法讀取的問題,因為資料匣預設值中,並沒有提供 ApplicationPoolIdentity 帳號,所以.net 無法存取該資料匣,建議在使用IIS7建立網站時,將這個帳號(IIS AppPool\應用程式集區名稱)一併放入,可避免應用程式存取資料匣權限不足問題,而設定後,也才能正常變更資料匣權限。

註:這個群組在本機使用者群組中,是沒有的,必須使用 (IIS AppPool\[應用程式集區名稱])這樣的打法,才會出現

相關資料:

caubekimo大的blog http://www.dotblogs.com.tw/caubekimo/archive/2010/09/19/17805.aspx

ashiang大的blog http://ashiang.blogspot.tw/2011/07/iis75-application-pool-identity.html

IIS6

到 應用程式集區 ==> 選定應用程式集區 ==> 按滑右鍵 到內容 ==> 身份識別

預設使用 網路服務(Network service)帳號

預設的匿名存取帳號

IIS7

開啟IIS7,點選主機名稱 ==> 右方圖中的 驗證 點滑鼠左鍵兩下 ==> 點 匿名驗證 ==> 點右邊 編輯 ==> 這裡就可以看到 匿名驗證 預設使用者

預設使用 IUSR

網站的資料匣如果有上傳功能,需要開放這個帳號可以讀寫

IIS6

開啟IIS6,點選指定站台 ==> 按滑鼠右鍵,點 內容 ==> 目錄與安全性設定 ==> 驗證及存取控制 ==> 編輯 ==> 這裡就可以看到 匿名存取使用的帳號

預設使用 IUSR_[主機名稱]

網站的資料匣如果有上傳功能,需要開放這個帳號可以讀寫

開放 瀏覽目錄

IIS7

開啟IIS7,點選網站 ==> 功能檢視 ==> 瀏覽目錄 ==> 在右方選 啟用

IIS6

開啟IIS6,在指定站台上按滑鼠右鍵 ==> 內容 ==> 主目錄 ==> 勾選 瀏覽目錄 ==> 確定

IIS7 錯誤訊息

因為網頁伺服器上的[ISAPI 及CGI 限制] 清單設定,而無法提供您要求的網頁

點選“ISAPI及CGI限制” ==> 將 ASP.NET v4.0.30319 設為允許 ,就可以了

資料來源:July大的blog http://graduatedasp.blogspot.tw/2011/10/iisisapi-cgi.html

IIS7.5 錯誤訊息

HTTP 錯誤 500.21 - Internal Server Error

處理常式 "PageHandlerFactory-Integrated" 的模組清單中有錯誤的模組 "ManagedPipelineHandler"

原因:先裝了.net 4.0,再加裝IIS7.5

處理方式:使用指令重新註冊.net 4.0

%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

資料來源:winsper大的blog http://blog.whisper.tw/2011/01/iis-0x8007000d.html

補充:如果在測試網頁時,發生了 .net load異常,都可以考慮試一下這方式

強制 IIS 使用指定IP(For 2003、IIS6)

 1. 由server 2003 光碟中取出/support/tools/Support.cab,並解壓取出httpcfg.exe檔案,並放到/windows/system32/中

 2. 使用指定綁定IP

httpcfg set iplisten -i 192.168.8.201

 3. 重新啟動IIS

註1:確認是否綁定 httpcfg query iplisten

註2:刪除綁定 httpcfg delete iplisten -i 192.168.8.201

資料來源:lanc大的blog

http://ezcshi.pixnet.net/blog/post/18901890-%E4%BD%BFiis%E8%88%87apache%E4%BB%A5%E5%96%AE%E7%B6%B2%E5%8D%A1%E9%9B%99ip-%E5%85%B1%E7%94%A880port%E6%96%B9%E5%BC%8F

關於IIS 7 資料匣權限問題towns偶爾會發生在搬移網站時資料匣權限錯誤的情形(資料匣安全性中無users這個群組,資料匣繼承功能錯誤),這時會發生網頁無法開啟的錯誤訊息(如圖iis7_user及iis7_user_2),將users群組加入該資料匣中並提供讀取權限,這個問題就解決了。但為什麼會發生無繼承的情形,目前towns並不知道

這個問題也會發生在當towns變更已架設好的網站的路徑時,也會發生這樣的問題(如圖iis75_user)

查看了一下IIS7預設的路徑(C:\inetpub),他有開放users可讀取的權限,而(C:\inetpub\wwwroot)還加上了IIS_USERS可讀取的權限

towns發生這樣的問題很有可能是因為towns 不習慣使用預設路徑造成

註1:一般使用非預設路徑,需要在資料匣的安全性中,將users及IIS_IUSRS加入,並提供讀取權限,IIS才能正常讀取資料

註2:如果沒有加上這兩個權限,會發生新檔案放入後,無法讀取的問題

IIS7 上傳與下載檔案大小限制設定

towns今天發生了圖片無法上傳的問題(使用FCKeditor上傳),主因是IIS7 上傳檔案大小是有限制

ASP程式預設的上傳大小為200kb

ASP程式預設的下載大小為4194304b

上傳大小修改位置:點指定網站 ==> 點選ASP ==> 點限制內容 ==> 要求的實體上限 ==> 改為2000000(2mb)

下載大小修改位置:點指定網站 ==> 點選ASP ==> 點限制內容 ==> 回應緩衝處理限制

ASP.NET 上傳檔案限制設定

在 C:\Windows\system32\inetsrv\config\applicationHost.config 檔案中間加入



設定為30MB

資料來源:

mis2000lab大的blog http://www.dotblogs.com.tw/mis2000lab/archive/2012/01/03/iis_upload_download_limit.aspx

小朱大的 blog http://www.dotblogs.com.tw/regionbbs/archive/2009/02/16/iis7_fileupload_maxallowedcontentlength.aspx

MAX大的 blog http://maxtellyou.blogspot.tw/2010/02/aspiis7.html

徐克大的 blog http://163.32.142.5/blog/post/4/4929

匯出站台清單

IIS7

使用 appcmd指令匯出

appcmd list site > c:\sitelist.txt

會將所有的站台資料匯出成sitelist.txt 檔,匯出的資料為中方框中的所有資料

IIS6

開啟IIS6 ==> 點選 執行 ==> 匯出清單

會將所有的站台資料匯出成一個 txt 檔,匯出的資料為右方框中的所有資料

錯誤頁面重新導向

IIS7

開啟IIS7,點選網站 ==> 功能檢視 ==> 右邊 IIS 中,有一個 錯誤網頁

註:如果使用.net 4.0,在 ASP.NET中會多出一個.NET錯誤網頁

註:有些錯誤頁面是無法重新導向的,如 400、403.9、411、414、500、500.11、500.14、500.15、501、503 和 505這些錯誤

資料來源:微軟 http://technet.microsoft.com/zh-tw/library/cc753103%28v=ws.10%29.aspx

關於無法動新導向的處理方式

資料來源: 這是由msdn討論中某大寫的網址,是一個外國大大的處理方式

http://www.west-wind.com/weblog/posts/2009/Apr/29/IIS-7-Error-Pages-taking-over-500-Errors

IIS6

開啟IIS6,在指定站台上按滑鼠右鍵 ==> 內容 ==> 自定錯誤

IIS抓取其他主機共用資料匣權限設定方式

IIS7

開啟IIS7,點選指定網站 ==> 開啟右邊的 驗證 ==> 點 編輯 ==> 設定 ==> 打入指定帳密 ==> 確定 ==> 確定 ==> 點右上的 啟用

IIS6

 1. 開啟IIS6,在指定站台上按滑鼠右鍵 ==> 內容 ==> 目錄安全性設定 ==> 啟用匿名存取,並打入指定帳密 ==> 確定

 2. 在web.config的中加入

資料來源:Jerry大的blog

http://jerry2yang.wordpress.com/2011/06/10/iis%E4%BC%BA%E6%9C%8D%E5%99%A8%E5%A6%82%E4%BD%95%E5%8F%96%E5%BE%97%E5%85%B6%E5%AE%83%E4%B8%BB%E6%A9%9F%E7%9A%84%E5%85%B1%E7%94%A8%E5%88%86%E4%BA%AB%E6%AA%94%E6%A1%88/

IIS抓取其他主機共用資料匣設定方式

大型網站有時會將前台、後台分開成兩台主機,以增加安全性及分散流量,這時IIS需要抓取其他主機共用料匣的問題,towns在下方做一個操作說明

方法1. 伺服器直接建立遠端虛擬磁碟,再使用IIS建立虛擬目錄並連接虛擬磁碟

這個方式測試後,在IIS7會發生權限問題而無法讀取檔案,不過,在IIS6以下的版本,是可以使用的

方法2. 直接使用IIS虛擬目錄抓取網路芳鄰路徑,並提供必需帳密權限

這個方式測試後,在IIS7會發生權限問題而無法讀取檔案,不過,在IIS6以下的版本,是可以使用的

方法3. 新增 應用程式 ,這個方式可以在IIS7下使用,將流程寫下做紀錄

 1. 新增 應用程式集區,並選 沒有Managed程式碼

 2. 於站台中新增 應用程式 ,並選取應用程式集區為剛設定的集區

 3. 在 實體路徑 中,打入網路實體路徑(可由網路芳鄰看見,如//192.168.*.1/abc)

 4. 且必在 連線身份 指定帳號(帳號必需為兩台主機都有的帳號,密碼相同,並擁有資料匣存取權限)

 5. 測試,點下 測試設定 ,其中 驗證 與 授權 都必需通過

這樣設定後,IIS就會使用指令帳號存取網路芳鄰的資料了

資料來源:

微軟說明 http://support.microsoft.com/kb/207671

MAX大的blog:http://maxtellyou.blogspot.tw/2010/02/iis-7.html

chin大口述

Session 逾時時間設定

IIS7

開啟IIS7,點選指定網站 ==> 開啟右邊的 工作階段狀態 ==> Cookie 設定 ==> 逾時

預設為 20分鐘

指令方式:使用 appcmd

appcmd set config /commit:WEBROOT /section:sessionState /cookieless:UseCookies /cookieName:MyCookie /timeout:40

IIS6

開啟IIS6,在指定站台上按滑鼠右鍵 ==> 內容 ==> 網站 ==> 連線 ==> 連線逾時時間

預設為 120秒

IIS7 讀取 *.svc格式檔案

當使用IIS 7以上版本,需要IIS 能使用 *.svc格式的檔案,必需要做三項設定

1. 啟用 .net 3.5.1 中WCF,並勾選 HTTP啟動

伺服器管理員 ==> 功能 ==> 新增功能 ==> .NET Framework 3.5.1 功能 ==> WCF 啟動 ==> 勾選 HTTP啟動

2. 開啟IIS 並在指定站台 新增 Managed 處理常式 svc-Integrated、新增指令碼對應 svc-ISAPI-2.0、svc-ISAPI-2.0-64

 2.1. 點選 指定站台 ==> 點選 處理常式對應 ==> 新增Managed處理常式 ==>

要求路徑:*.svc

類型選:System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

名稱:svc-Integrated

 2.2. 點選 指定站台 ==> 點選 處理常式對應 ==> 新增指令對應

要求路徑:*.svc

執行檔:%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll

名稱:svc-ISAPI-2.0(可自定)

 2.3. 點選 指定站台 ==> 點選 處理常式對應 ==> 新增指令對應

要求路徑:*.svc

執行檔:%SystemRoot%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll

名稱:svc-ISAPI-2.0-64(可自定)

3. 繫結只能設定一個

資料來源:demo大的blog

http://demo.tc/Post/607

補充:執行了第一點後,必需對.net 4.0 執行 reinstall的動作

在 C:\Windows\Microsoft.NET\Framework\v4.0.30319 路徑中 下 aspnet_regiis.exe -i -enable 這一段指令,否則會出現以下錯誤

無法從組件 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 載入類型 'System.ServiceModel.Activation.HttpModule'。

資料來源:微軟 MSDN

http://msdn.microsoft.com/zh-tw/library/aa751852%28v=vs.110%29.aspx

強化IIS對於XSS攻擊的阻擋能力

IIS7

開啟IIS7,點選指定網站 ==> 點 HTTP回應標頭 ==> 點右上角的 新增 ==> 名稱打 X-Frame-Options(或X 框架選項),值打入 Deny ==> 確定

IIS6

開啟IIS6,在指定站台上按滑鼠右鍵 ==> 內容 ==> HTTP標頭 ==> 自定 HTTP標頭 ==> 新增 ==> 自定標頭名稱打 X-Frame-Options(或X 框架選項),自定標頭值打入 Deny ==> 確定

註1:這個也是可以直接寫入web.config中,不過使用IIS設定,比較不會錯

這一段

註2:這個方式在IIS6中是否有用,towns並不知道,尤其在.net 2.0以下的版本,並沒有web.config的設定,是否有用,就請看官自己試試啦!

資料來源:

微軟文件:http://support.microsoft.com/kb/2694329

康拍樂大的BLOG:http://compilerok.blogspot.tw/2013/10/iframe-x-frame-options.html

關於連線逾時設定



IIS7

1. 開啟IIS7,點選指定網站 ==> 開啟右邊的 工作階段狀態 ==> Cookie 設定 ==> 逾時

這個值設定後,會在web.config中加入



     



預設 20分鐘

2. 應用程式集區 ==> 指定集區 ==> 進階設定 ==> 處理序模型 ==> 閒置逾時(分),預設 20

3. 點選指定站台 ==> 滑鼠右鍵“網站管理” ==> 進階設定 ==> 行為 ==> 連線限制 ==> 連線逾時(秒),預設 120

IIS6

1. 應用程式集區 ==> 指定集區 按滑鼠右鍵 ==> 內容 ==> 效能 ==> 閒置等後時間。預設打勾,值為20

2. 開啟IIS6,在指定站台上按滑鼠右鍵 ==> 內容 ==> 網站 ==> 連線 ==> 連線逾時時間

預設為 120秒

其中連線逾時時間towns是不太懂的,另兩個比較明確,一為程式預設值、另一為IIS預設值,不過優先順序是否與Apache相同,towns就不知道了呢!

https://blog.xuite.net/towns/hc/67699599-IIS6+%E8%BD%89+IIS7+%E7%9A%84%E8%A8%AD%E5%AE%9A%E5%B0%8D%E6%87%89%E5%8F%8AIIS7%E5%95%8F%E9%A1%8C

2018年10月29日 星期一

VB.Net如何讀寫Excel檔案 含編碼 XLS或是其他格式

Imports Microsoft.Office.Interop


        Dim app As New Excel.Application 'app 是操作 Excel 的變數
        Dim worksheet As Excel.Worksheet 'Worksheet 代表的是 Excel 工作表
        Dim workbook As Excel.Workbook 'Workbook 代表的是一個 Excel 本體
        workbook = app.Workbooks.Add() '建立一個空 Excel (裡面有三張工作表)
        worksheet = workbook.Worksheets("工作表1") '讀取其中一張工作表
        workbook.SaveAs(Path.GetFullPath(XXXXX, 18)
        workbook.Close()
        'workbook.Close(True, Path.GetFullPath(XXXXXX), True) '操作完畢後一定要關閉檔案 
        app.Quit() '結束操作

編碼參考
https://docs.microsoft.com/zh-tw/dotnet/api/microsoft.office.interop.excel.xlfileformat?view=excel-pia

2018年10月23日 星期二

例外詳細資訊: System.Security.SecurityException: 型別 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 的使用權限要求失敗。

安裝Microsoft .NET Framework 2.0 軟體開發套件 (SDK)
控制台>系統管理工具>Microsoft .NET Framework 2.0 組態>XXX安全>調整安全性>除了限制的網站其餘完全不限制
IIS>設定應用程式集區預設值>識別改為NetworkService

2018年9月19日 星期三

web.config中compilation 节点详解


   ... 
   ...
   ...
   ...
   ...
   ...

以下几节描述了特性、子元素和父元素。

特性

 
特性
说明
assemblyPostProcessorType
可选的 String 特性。
通过引用程序集的处理器后功能为程序集指定后续处理编译步骤。 使用 "程序集后处理器,程序集" 格式。 程序集后处理器 必须实现 IAssemblyPostProcessor 接口。 使用这种后续处理方法可以针对编译强制执行调试,这可以在指定部署模式时重写。
此特性是 .NET Framework 2.0 版中的新特性。
默认值为空字符串。
batch
可选的 Boolean 特性。
指示是否支持批处理。
如果为 True,则清除在第一次访问文件时所需的编译导致的延迟。 当此特性设置为 True 时, ASP.NET 将以批处理模式预编译所有未编译的文件,第一次编译文件时,这将导致更长时间的延迟。 但在这一初始延迟之后,对文件进行后续访问时,将消除编译延迟。
默认值为 True
batchTimeout
可选的 TimeSpan 特性。
指定批编译的超时期限(以秒为单位)。 如果编译不能在超时期限内完成,则编译器还原为当前页的单编译模式。
默认值为“900”(15 分钟)。
debug
可选的 Boolean 特性。
指定是否应编译调试二进制文件(而非发布的二进制文件)。
默认值为 False
defaultLanguage
可选的 String 特性。
指定要在动态编译文件中使用的默认编程语言,如 "C#" 或“PERL”。 语言名是使用 system.codeDom 节的 compilers 元素或此元素的 compilers 子元素(已被否决)定义的。
默认值为 "vb"
explicit
可选的 Boolean 特性。
指定是否设置 Microsoft Visual Basic explicit 编译选项。 如果为 True,则必须使用 DimPrivatePublic 或 ReDim 语句声明所有变量。
默认值为 True
maxBatchGeneratedFileSize
可选的 Int32 特性。
指定每个批编译过程中生成的源文件的最大组合大小(以 KB 为单位)。 通常情况下,当实际需要的位数很少却在内存中加载巨大的程序集并不是理想的做法。 该限制有助于确保程序集的大小控制在合理的范围内,使应用程序能够利用批处理机制而又不会使系统过载。 这类似于 maxBatchSize
默认值为 1000
maxBatchSize
可选的 Int32 特性。
指定每个成批处理的编译的最多页数。
默认值为 1000
numRecompilesBeforeAppRestart
可选的 Int32 特性。
指定应用程序重新启动前可能对资源进行动态重新编译的次数。 在全局和应用程序级别(而非目录级别)支持此特性。
Note Note
每当程序集失效且删除失败时,ASP.NET 都会增加 NumRecompilesBeforeAppRestart 属性。
默认值为 15
optimizeCompilations
可选的 Boolean 特性。
指定在顶级文件被更改时,动态编译是否将重新编译整个网站。 顶级文件包括 Global.asax 文件与 Bin 和 App_Code 文件夹中的所有文件。 如果为 True,则仅重新编译更改过的文件。
默认值为 False
有关更多信息,请参见 Understanding ASP.NET Dynamic Compilation
strict
可选的 Boolean 特性。
指定是否启用 Visual Basic strict 编译选项。
默认值为 False
targetFramework
可选的 String 特性。
指定网站的目标 .NET Framework 的版本。
默认值为 Null
如果省略此特性,则目标版本将由 Web.config 文件中的其他设置以及与网站相关联的 IIS 应用程序池确定。 有关更多信息,请参见CompilationSection.TargetFramework和 .NET Framework Targeting for Web Projects
tempDirectory
可选的 String 特性。
指定编译期间用于临时文件存储的目录。
默认值为空字符串 ("")。
如果存在空字符串且当前过程具有所需的访问权限,则文件存储在 %FrameworkInstallLocation%\ Temporary ASP.NET Files 目录中。
请注意,只有具有高信任权限的过程可以访问 %FrameworkInstallLocation%\ Temporary ASP.NET Files。
urlLinePragmas
可选的 Boolean 特性。
指定编译器是否应使用 URL(而非物理路径)。
默认值为 False

子元素

 
元素
说明
assemblies
定义一个程序集名称的集合,这些程序集在 ASP.NET 资源编译期间使用。
buildProviders
定义用于编译自定义资源文件的生成提供程序的集合。 有关更多信息,请参见 BuildProvider 类。
codeSubDirectories
定义一个有序子目录集合,这些子目录包含在运行时编译的文件。
compilers
定义一个编译器选项的集合。
Note Note
在 .NET Framework 2.0 及更高版本中,此元素已被否决,而改为使用 system.codeDom 节中的编译器元素。 但是,使用 compilation 元素的 compilers 子元素仍然有效,并且将重写位于 system.codedom 节中的 compilers 元素。
expressionBuilders
定义一个要在编译期间使用的资源字符串的集合。 资源字符串将前缀与表达式生成器关联起来。
folderLevelBuildProviders
定义用于编译特定文件夹中自定义资源文件的生成提供程序的集合。 生成提供程序映射到文件扩展名并用于生成指定类型的文件的代码。 有关更多信息,请参见 FolderLevelBuildProvider 类。

父元素

 
元素
说明
configuration
指定公共语言运行时和 .NET Framework 应用程序所使用的每个配置文件中均需要的根元素。
system.web
在配置文件中指定 ASP.NET 配置设置的根元素,它包含配置 ASP.NET Web 应用程序行为的配置元素。
备注
 
compilation 元素配置 ASP.NET 用于编译应用程序的所有编译设置。
在 .NET Framework 2.0 版中,compilation 元素的 compilers 子元素已弃用,改用 system.codeDom 节的 compilers 元素。 但是,使用 compilation 元素的 compilers 子元素仍然有效,并且将重写位于 system.codedom 节中的 compilers 元素。

默认配置

下面的默认 compilation 元素不是在 Machine.config 文件或根 Web.config 文件中显式配置的。 但是,它是应用程序返回的默认配置。 项将添加到根 Web.config 文件中的 assembliesbuildProviders 和 expressionBuilders 集合。
 
 

   
       
   
   
       
   
   
       
   

下面的默认 compilation 元素在 .NET Framework 1.1 版的 Machine.config 文件中配置。 在 .NET Framework 1.0 版中也存在类似的设置,但版本号不同。
 
 

   
      
      
      
      
   
      
      
      
      
      
      
      
      
      
      
   

示例
 
下面的代码示例演示如何为应用程序配置编译设置。
 
 

   
      
         
            
            
         

         
           
           
           
         

         
            
        
     
   

 
配置节处理程序
配置成员
可配置的位置
Machine.config
根级别的 Web.config
应用程序级别的 Web.config
虚拟或物理目录级别的 Web.config
要求
Microsoft Internet 信息服务 (IIS) 5.0、5.1 或 6.0
.NET Framework 1.0、1.1、2.0
Visual Studio 2003 或 Visual Studio 2005