2014年10月1日 星期三

微軟更新 IE 的技術支援生命期期

微軟的 IE 一直被人罵,所以微軟除了更新 IE 版本外,也發現客戶不更新版本,卻一直罵 IE 不好用。

眼看著 Chrome, Firefox等市佔率一直成長,但 IE 身為作業系統的一部份,不能說更新就更新。不像 Chrome, Firefox 是強迫更新,且無法降版本。


因此,微軟更新 IE 的技術支援生命期期。

原則: 2016/1/12 之後,Windows 只支援該 Windows 版本的可用 IE 的最新版本。

例如:Windows Vista 可支援的 IE 版本為 7, 8, 9。到2016/1/12 起,只支援 IE 9。雖然仍然可以執行 IE 7,8,但微軟不再支援!  有問題,請升級 IE 9。

相關的 Windows  版本及 IE 版本,請見 http://support2.microsoft.com/gp/microsoft-internet-explorer

2014年9月4日 星期四

Azure WebSite 上使用 MS Report 產生 PDF, 發生 ArgumentException: Parameter is not valid 的例外

問題

在使用 Azure WebSite (免費模式),並且使用 Microsoft.ReportViewer.WebForms 產生 PDF 檔時,發生了下面的錯誤

[ArgumentException: Parameter is not valid.]
   System.Drawing.Graphics.GetHdc() +1153145
   Microsoft.ReportingServices.Rendering.RichText.LineBreaker.Flow(TextBox textBox, Graphics g, FontCache fontCache, FlowContext flowContext, Boolean keepLines, Single& height) +75

原因

原來,MS Report 在產生 PDF 檔時,會使用到 GDI+ 的assembly。而 Azure WebSite 對於 GDI+ assembly 的使用有權限上的限制。(就是不能使用啦!)

找到一篇 WINDOWS AZURE WEB SITES VS WEB ROLES,裡頭就寫到了 Azure Web Site 無法使用 GDI+, 而 Cloud Service (Web Role 或 Worker Role) 則沒有這個限制!

因為 Azure Web Site 免費模式與共享模式的關係,Web Site 所執行的帳號是 random account,也沒有辦法存取系統的資源,包括 GDI+ (圖形)。

http://stackoverflow.com/questions/16183529/reportviewer-rdlc-azure-websites-error-80004005 中,WAWS team 的人更直接回答

PDF generation is actually not supported in the security configuration on WAWS, in this case you should use either a WebRole or a Web Server on a Virtual Machine. Thanks! Nir (WAWS team)

解決

因為與別人分享而無法獨佔圖形,那如果整台虛擬機都是我所有,會不會解決這個問題呢?馬上將模式調整成「基本」模式看看。

image

果然,重新再執行相同的功能就解決了。(可是,這樣比較花錢)

 

參考

WINDOWS AZURE WEB SITES VS WEB ROLES

http://social.msdn.microsoft.com/forums/azure/en-US/b4a6eb43-0013-435f-9d11-00ee26a8d017/report-viewer-error-on-export-pdf-or-excel-from-azure-web-sites

2014年6月25日 星期三

我的網頁在 IE 11 下不能執行!?

今天發生的問題。

問題

我的網頁,在 IE11 下執行會發生錯誤,但 Chrome 卻是正常。所以 IE 好…

錯訊訊息

幸好,我們有留 exception log,並且當錯誤時直接會寄信到我們的信箱。

System.Data.SqlClient.SqlException: The conversion of a nvarchar data type to a datetime data type resulted in an out-of-range value.

怎麼會和 SQL 有關係呢?

再看程式碼

public Order GetFeedbackData(string taxNo, DateTime today)
{
    const string sql = @"Select * from Orders where orderDate = {0}";
    var query = _db.Database.SqlQuery<Order>(
        sql, today.ToShortDateString()).FirstOrDefault();
    return query;
}

原來,和 SQL 組字串有關。再看 ToShortDateString 的 msdn 說明,這個方法與Thread.CurrentCulture 有關。

答案呼之欲出了。

Web.Config

再看 Web.config, 有一段設定如下

<globalization culture="auto" uiCulture="auto"/>

查一下 http://msdn.microsoft.com/zh-tw/library/hy4kkhe0(v=vs.85).aspx,發現這個就是用來取得 Rquest 的 Thread.CurrentCulture 的根據。

使用 Fiddler 錄一下 Request, 發現 IE 11 的 Header Accept-Language: zh-Hant-TW,而 Chrome 的則為 zh-TW

答案揭曉。是 IE 10 之後,預設的 Accept-Language 改為 zh-Hant-TW

解決

解決方法很簡單,就是

  1. 不要組SQL 字串啦!
public Order GetFeedbackData(string taxNo, DateTime today)
{
    const string sql = @"Select * from Orders where orderDate = {0}";
    var query = _db.Database.SqlQuery<Order>(
        sql, today.ToShortDateString()).FirstOrDefault();
    return query;
}

直接使用 today 的 DateTime 型別傳入 Entity Framework 讓它為我們查詢即可。

參考

ASP.NET 2.0 多國語系網站與 Windows 8 的 IE10 語系設定

Visual Studio 2013 套件

整理一下我所使用的 Visual Studio 套件。

  1. SideWaffle : 增加好用的 snippet, project templates, item templates. 尤其在 angularjs 的開發上。
  2. OzCode : Debug 用
  3. jQuery Code Snippets
  4. Productivity Power Tools
  5. ReAttach : 重複 Attact 上一次所 attach 的 process。Debug 用
  6. SlowCheetah: xml Transforms, 轉換 .config 用,並且可以 preview 並比對轉換前後的差異
  7. Snippet Designer: http://snippetdesigner.codeplex.com/
  8. SpecFlow : BDD
  9. t4 editor: 寫 t4 template 用的編輯器
  10. Team Foundation Server Power Tool
  11. Web Essentials: 開發 Web 專案必備
  12. NUnit Test Adapter : 單元測試用
  13. xUnit Test Adapter : 單元測試用

2014年4月24日 星期四

如何讓 .NET 的網站 或 WebService 第一次啟動變快 ver 2014 ( IIS 啟動模式 )

 

自覺寫 blog 的功力大減,反而想把這裡變成自己的備忘錄,畢竟人入中年啊。
而好心的高手們,也都會熱心地留下心得,遠比我來的大方許多。

第一次啟動 ASP.NET 應用程式會比較慢的「傳統」已經過時了。
記得要更新大腦內的記憶體啊!

下面連結是 Franma Hsu 的好心提醒

如何讓 .NET 的網站 或 WebService 第一次啟動變快 ver 2014 ( IIS 啟動模式 )

2013年12月16日 星期一

不要用 jQuery Template

今天有看到公司的「合作夥伴」在使用 jQuery Template。
這是2010年微軟向 jQuery 提交的建議,但很快地就被否決了。

可在 這裡看到jQuery template 的歷史
微軟的 CDN 也一直停留在 beta 1好幾年了

所以,不要再用它了。

如果有相同的需求 ,請使用相對活著的

總之,不要用已經是過去式的東西。

2013年11月1日 星期五

「TFS 上取不到新版的程式」的解決方式

問題:

你好,有一個問題請你參詳一下,我在這邊的確是有看到一個現象,就是TFS的版本的確是最新的。但Local的版本是舊的,取得最新版還是舊的程式,請問這可能是甚麼原因?
如下圖

SNAGHTML39b195a

原因

取得新版本後,TFS Server 會記錄您已經取得對應的版本號(如 8172),但因故本機的檔案因異動而並不是最新的。
例如在檔案總管刪除檔案,此時 TFS 並不知道您手動刪除。

解決方式

強迫取得最新版本,即使本機已有最新版本也要以伺服器版本覆蓋本機檔案。
下圖以 VS2013 為例。在指定的目錄上,按右鍵,取得「指定的版本」

SNAGHTML39d1932

勾選選項「覆寫本機可寫但未簽出的檔案」,「即使與伺服器版本相同,也要覆蓋本機檔案」(<== 我自己翻的,正確的中文請自行比對)

SNAGHTML39db1a9

Share with Facebook