透過 XMLHttpRequest 檢視 VS2012 的 IIS 8 設定

現在 Visual Studio 2012 內建了 IIS 8 Web 伺服器,以方便開發過程的測試,現在利用 Visual Studio 2012 開發專案時,IIS 8 是預設的伺服器,開啟專案屬性頁可以看到相關的設定內容如下:


在「Visual Studio Express 2012 for Web - IIS Express」與「舊專案升級為 Visual Studio 2012 之後改用 IIS Express 測試」這兩篇章裏面已經作了說明,而現在我們透過XMLHttpRequest,進一步檢視兩者的差異。

建立一個新的 ASP.NET 空白Web應用程式專案,將其命名為 IIS-Check,於其中配置一個網頁 check.html 與一個泛型處理常式 check.ashx 。現在開啟 check.ashx修改其中的預設內容如下:

public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
    context.Response.Write("");
}

由於只要測試 Ajax 的標頭回傳,因此最後一行的Write() 寫入空字串即可。緊接著開啟 check.html ,於其中配置一個標籤,用來顯示所要呈現的資訊:

<body>
    <p id="message"></p>
</body>

撰寫解析標頭的 JavaScript 如下:

<script>
window.onload = function () {
    var client = new XMLHttpRequest();
    client.open('GET', 'check.ashx', true);
    client.onreadystatechange = function () {
        document.getElementById('message').innerHTML = '';
        try {
var header = client.getAllResponseHeaders();
var headers = header.split('\r\n');
            for (i = 0; i < headers.length; i++) {
                   document.getElementById('message').innerHTML +=
                    (headers[i] + '<br/>');
            }
        } catch (e) {
                   document.getElementById('message').innerHTML = e;
            }
        };
            client.send();
   };
</script>

首先建立 XMLHttpRequest() 物件 client ,開啟伺器檔案 check.ashx 連線,完成之後,調用 getAllResponseHeaders() 方法取回伺服器回傳的標題資訊,然後利用一個迴圈解析其內容,最後得到以下的結果:


這是筆者測試機器回傳的結果,你可以看到其中反白標示的資訊,顯示目前的測試伺服器為 IIS 8 ,現在回到本文一開始的屬性 Web 設定項目中,將伺服器重設為 Visual Studio 程式開發伺服器:


現在重新執行網頁,如下圖:


其中伺服器為 ASP.NET Development Server ,為舊版ASP.NET使用的測試伺服器。







沒有留言: