為什麼IE 11的127.0.0.1無連線無反應

IE呀IE

IE11與FireFox對照圖

在TechDays Taiwan 2013的ASP.NET Web API 2演講中,有一個重覆演練數十次的Demo居然出錯而跑出不來,礙於時間的關係,並無法在第一次時找出問題點。在演講時的問題如上圖的IE 11,下課後其實還沒走出教室我就知道問題是出在IE 11身上,因為之前的演練我並無使用過IE 11。只能怪自己的環境測試不足

程式自古誰不錯,留取丹心照汗青。

Worker Role+OWIN+Web API

這是一支Worker Role+OWIN+ASP.NET Web API的專案,專案架構圖如下:

Worker Role+OWIN+ASP.NET Web API架構圖

原本猜想是不是IE 11的HTTP Header裡有太新的內容,所以OWIN Host看不懂而不知道怎麼處理IE 11的請求,結果是我想太多。

免費網站與REST服務壓力測試工具

ASP.NET Web API壓力測試

在《ASP.NET MVC 4網站開發美學》上市之後,曾經有讀者問筆者:「ASP.NET Web API是否真的可以使用在真實的專案上?」答案是肯定可以。ASP.NET Web API並不是一個全新技術,而是一項整合與改良的技術,ASP.NET Web API在HTTP Service就是要提供一個輕量且高效率運作框架。

但要如何證明呢?李錩鈺博士說:「有一分證據,說一分話。」現在為各位提供可視的數據給讀者。

SuperBenchmarker

這是一支Command-line應用程式,讓我們非常簡易即可對網站或HTTP API進行壓力測試。

PM> Install-Package SuperBenchmarker

安裝套件之後,開啟專案目錄下的「\packages\SuperBenchmarker.{version} \lib」即可找到sb.exe主程式。

SuperBenchmarker參數說明

  sb.exe -u url [-c concurrency] [-n numberOfRequests] [-m method] [-t template] [-p plugin] [-f file] [-d] [-v] [-k] [-x] [-q] [-h] [-?]
 

常用的有:

  1. -u url:你要測試的網站或REST服務URI。
  2. -n N:N代表要測試的次數。預設 100。
  3. -c N:N代表同時連線數。預設 1。

-c參數是壓力測試關鍵之一,以筆者的測試經驗,一台主機最大設定值約250以下,正常是設定為200最順。-n是進行多少回測試,數字越大測試越久數據越精確。

sb.exe 範例

以下是一些測試範例:

  1. sb.exe -u http://google.com
    以預設值(-c 1 -n 100)對http://google.com進行請求測試。
  2. sb.exe -u http://google.com -n 1000 -c 10
    以同時10連線進行1000次請求測試。

有了以上SuperBenchmarker工具,讀者就可以非常方便對ASP.NET Web API或網站進行簡易的壓力測試。注意,請不要去壓測別人的網站或服務。

最後,其實我比較擔心是硬體受不受的了,而不是軟體說。

參考資料

  1. http://byterot.blogspot.tw/2013/05/superbenchmarker-ab.exe-sb.exe-apache-benchmark-load-performance-benchmark-asp-net-web-api.html
  2. https://github.com/aliostad/SuperBenchmarker/tree/master/download
  3. http://chocolatey.org/packages/SuperBenchmarker

Entity Framework的Entities類別不出現在IntelliSense

Entity Framework的Entities類別出現與不出現在IntelliSense

Action方法中正常的IntelliSense
Action方法中不正常的IntelliSense

圖一是正常我們加入ADO.NET 實體資料模型(EDMX檔案,Entity Framework)之後,在MVC的Action方法中撰寫相關資料庫程式碼時應該出現的IntelliSense提示。

圖二,這是學生在操作時發生的問題,後來我回家模擬來出,在加入Entity Framework Data Model之後,於MVC的Action方法裡的IntelliSense不會出現NorthwindEntities型別的提示。

發生原因及解決辦法

設定Windows 8.1 RTM的指紋登入

Windows 8.1無法安裝Lonovo System Update

Lenovo System Update

在Microsoft的德政之下,終於可以透過MSDN下載到Windows 8.1正式版,雖然不是第一時間,但該來的總是要來,今天就把主機重灌上到Windows 8.1正式版。安裝速度令人非常滿意,而且我很高興買的是Lenovo的筆電,因為它有一支非常好用的System Update程式,只要執行System Update之後,軟體、驅動程式…都會自動幫你下載安裝,可說是“一鍵式”之大成。對於我們這種常常東裝裝、西搞搞的人實在太方便。

不過,如果你下載System Update之後在Windows 8.1無法安裝,那必須透過指令模式來安裝(感謝Demo Fan提供)。

                systemupdate502-06-26-2013.exe -s -a /s /v"/qn"
            

安裝不會有任何訊息,你可以過一會兒查詢「應用程式列表」,安裝好就下出現下例圖示:

System Update in Windows 8.1

ThinkVantage Fingerprint Software無法安裝

透過System Update已經差不多要安裝完成之後,最後一個如第一張圖的ThinkVantage Fingerprint Software會無法安裝,如下圖:

ThinkVantage Fingerprint Software can not install in Windows 8.1
ThinkVantage Fingerprint Software install error message in windows 8.1

提升ASP.NET MVC專案安全性與效能小技巧

ASP.NET MVC專案最佳化

在討論ASP.NET MVC時,大多是針對MVC模式與MVC應用程式在討論,較少看到有人討論ASP.NET MVC專案本身,其實ASP.NET MVC專案有幾個地方可以微調整,有些可以增加安全性,有些可以增加效能。

取消Header輸出MVC專案版本

預設的ASP.NET MVC專案在一次回應請求的標頭裡包含著些ASP.NET MVC專案的版本,以 http://kkbruce.tw 為例,預設情況下的回應標頭(Response Header)為:

HTTP/1.1 200 OK
Cache-Control: public, max-age=3600
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: Sat, 27 Jul 2013 17:49:36 GMT
Last-Modified: Sat, 27 Jul 2013 16:49:36 GMT
Vary: Accept-Encoding
Server: Microsoft-IIS/8.0
X-AspNetMvc-Version: 4.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?RTpcUHJvamVjdHNca2ticnVjZS50d1xra2JydWNlLnR3XEJvb3RzdHJhcFxHZXR0aW5nU3RhcnRlZA==?=
X-Powered-By: ASP.NET
Date: Sat, 27 Jul 2013 16:49:39 GMT
Content-Length: 7699
  

由回應標頭(Response Header)中可以看出目前此網站的ASP.NET MVC 4的專案,如果某個版本ASP.NET MVC專案某一天爆發漏洞,那麼要找下手的目標是很容易的。

所有一個簡單的需求,不管我們的ASP.NET MVC專案是什麼版本,MVC 2/3/4/5…都不要在回應標頭(Response Header)顯示ASP.NET MVC專案版本,其實也很容易,只需要在 Global.asax 的 Application_Start() 透過以下設置: