Category Archives: ASP.Net Tips and Tricks

ASP.NET SSL Issue – IE 上的SSL 問題

最近公司建立了一個新的網站..
提供一個介面給客戶更新資料..
最初的我們沒有使用SSL 的…
由於有些資料是一些敏感性的資料
所以需要使用SSL 來把資料加密

這個網頁有些功能是使用Google Chart API
所以有一些圖的URL 是連接到不是同一Domain 的 URL. E.G.  Google
還有..這個網站也有使用JQuery的..
而我們使用的是在Google 寄存的 JQuery Library
[以減輕經路的負荷…]
誰不知..加了SSL 後的網站..在IE的底下便出了一個問題…
每當開啟一些網頁有和連接到不是本地的URL/ E.G. 網外的URL 時
便會出現以下信息
Do you want to view only the webpage content that was delivered securely?

Do You want to view only the webpage content that was delivered securely?

感到十分煩惱…
之後發現解決放法有2個.. 一是改變IE 的設定..二是改變這個網站的編寫方法

解決方法
1) 更變IE 設定
可以在IE上的Menu bar 上按 “Tools”  -> “Internet Options
在”Internet Options” windows 按一下 “Security 安全“分頁
之後按一下”Custom Level … 自定級別…“按鈕
在”安會設定” 找 “Display mixed content
把他設定為”Enable” 之後按”OK” 便可

[由於公司有很多使用者…要他們改變他們的 IE 設定給他們的感覺很不專業…所以我們便想了另一個解決方法]

2) 改變網站的設計
預先Download 所有向外又不是HTTPS 的 URL 連結用的資源到IIS Server
我們寫了一個方法先把Google Chart API 生產出來的圖Download 到Server 上之後再把他連到ASP.Net 網頁上
和把寄存在網上的javascript 和css 檔案都Download 到一個資料夾上使用
Hope you find it useful

IE:The file could not be written to the cache — 在IE 上出現 該文件不能寫入到緩存

今天公司的ASP.Net網頁上出現了一個問題
首先是有客戶[在IE 中]不能打開一個xls 的超連結…
我們測試時用FireFox Google Chrome 都是沒有問題的
之後再用IE 嘗試打開找download 這個File 時出現以下的錯誤信息
The file could not be written to the cache


之後發現原因是因為我們公司的網頁是用了SSL 來加密的..
但是之前為了增加網頁的效能和使用考經驗我們亦都 啟用了 IIS 上的 “Enable content expiration” 設定.. 因為這些文件不會更新得很頻密的關係所以啟動了Cache…
很可惜IE 處理和 SSL有關的文件的Cache 上出現了一些問題… 所以便出現了這個錯誤句子了

解決方法很簡單…
就是到IIS
把開相關的”資料夾內容“/ 或”Virtual Directory 內容
之後選擇”Header tab
只要取消選取”Enable content expiration

Hope you find it useful

ASP.Net IIS Browser Image Cache Issue — 在ASP.Net 中解決Cache 了的圖片不能更新使用新的圖片問題

最近都是忙公司的網站…
為了提升使用者體驗
我們嘗試使用IIS 中的Caching,
希望使用者不同每次都需要Download 這網站的圖或CSS 檔…
這可以令瀏覽速度加快

之後我們也建立了一些Virtual Directory用來儲存一些每天都會更新的圖片… 其實是從Google Chartdownload 來的..因為公司的網站用了SSL …所以每當有需要連線到其他的domain website 時 在IE上總會出現一些令人煩惱的信息…
所以最後選擇了每天Download這些圖片…之後再用ASP.Net 來連接這想在Virtual Directory 上的圖…

誰不知… 這些圖片不懂得自動更新…即使檔案的修改日期已經更新了..但是在客戶端都只是看到之前的圖…
最後發現…原來這個Virtual Directory是繼承了這個Web ApplicationCache [content expiration] settings

解決方法很想十分簡單…
只要在這個”Virtual Directory/虛擬目錄” 上選擇”Properies/內容
之後選”HTTP Header’ 分頁
之後選”Enable content expiration”  ->選”Expire immediately“便可…

很可惜用戶已經瀏覽過公司的網站…
所以他們的瀏覽器上有了這個 Cache Expiration 設定…
瀏覽器只會在Cache 過期後才會再次Load 這個檔案的…
用戶可以按”CTRL” + “F5” 去解決這個問題…
但是如果需要找每一個用戶去做這個動作..給別人的感覺很不專業…

最後我們找到了解決的方法..
便是我們在圖片的URL 上加了一個用timestamp 做成的Query string
E.G.  http://i1255.photobucket.com/albums/hh631/sharechiwai/temporary-1.jpg?20101118000000

由於這個圖片的URL不同了..所以瀏覽器便會感到這是一個新的圖片檔案名…
便不會從Cache中 load 這個圖片出來了 =)

Hope you find it useful

.Net Library Export DataSet/DataTable to SpreadSheet (XLSX) II — 在 滙出 DataSet/DataTable 成 Excel XLSX 格式

最近…公司的新網頁需要一個功能..要輸出網頁上的一些資料成 Excel Spreadsheet..上星期測試了自己之前寫的 ShareChiWaiLib 的 XLSXHelper… 能夠成功在本機測試..可以打資料由DataSet/DataTable/GridView 上輸出到 XLSX… 很可惜真正的發報到 Server 時出現以下的  錯誤信息…
“Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)). “

和朋友一起想了很久也想不通怎麼解決…
其中一個原因是不想在Server 上再安裝其他軟件..E.G. Office…最後終於放棄了 用XLSXHelper

經過一段時間的努力..終於學會怎樣使用 Open XML SDK 來做到把DataSet/DataTable Export 到 Spreadsheet [XLSX format 了]

我把Source Code 發佈了CodePlex 上.. 大家有興趣的請一起研究研究..令這個Library 更好用…方便其他遇到同樣問題的朋友
http://sharechiwailib.codeplex.com/

大家可以到以下URL Download 最近Compile 有OpenXMLXLSXHelper 的 DLL

http://sharechiwailib.codeplex.com/releases/view/55256

Imports ShareChiWaiLib
Dim tbl as DataTable = Get_DataTableForTesting() ' 這是你取DataTable的一個功能

Dim ds as DataSet = Get_DataSetForTesting() ' 這是你取DataSet的一個功能

Dim XLSXExporter As New OpenXMLXLSXHelper

XLSXExporter.ExportDatatableToXLSX(tbl, "D:DestinationFolder", "DataTable.xlsx", True, "ExampleSheet", 1)

XLSXExporter.ExportDataSetToXLSX(ds, "D:DestinationFolder", "DataSet.xlsx", True, 1)

解釋
XLSXExporter.ExportDatatableToXLSX(DataTable, 儲存位置, 儲存的, 是否使用Table Column Header 為Column 名, "Sheet Name", 第一行的Index 由1開始)

XLSXExporter.ExportDataSetToXLSX(DataSet, 儲存位置, 儲存的, 是否使用Table Header 為Column 名,  第一行的Index 由1開始)

Hope you find it useful
有時間的時候我會做一些範例來..令到這個Library 更加容易明白…更加容易使用
Have a good day =)

Asp.Net Unable to generate a temporary class(result=1)

今日早上收到朋友的Email 說 公司的一個將會發佈的網頁有問題
當瀏覽到其中一頁時遇到以下的Error Message

Unable to generate a temporary class(result=1)
error CS2001: Source file ‘C:WINDOWSTEMPxxxx.cs’ could not be found
error CS2008: No inputs specified

我記得很久之前也遇過差不多的問題

其實解決方法十分簡單
我們可以跟隨錯誤信息來分析這個問題
Unable to generate a temporary class

error CS2001: Source file ‘C:WINDOWSTEMPxxxx.cs’ could not be found
加在一起給我的感覺是
因而不能產生這個 temporary class
所以便找不到這個Source file

不能產生temporary class 其中一個原因是
因為在Server上沒有寫的權力…
所以我登入到這個Server
找到這個路徑
“C:WINDOWSTEMP”
更改了 這個IIS 的使用者權限
令他可以修改這個資料夾的權力
E.g.加入 Modify/Read/Write的權力
便可以解決這個問題了

Hope you find it useful