和你一起分析Http Handler從IIS6到IIS7的使用問題_負(fù)載集群教程
$(document).ready(function() {
loaddata();
setInterval(loaddata, 3000);
});
function loaddata() {
$.getJSON("Common/ServerInfoHandler.ashx?format=json&jsoncallback=?", {}, function(json) {
$("#labServerName").text("服務(wù)器名稱:" + json.ServerName);
$("#labServerIP").text("服務(wù)器地址:" + json.ServerIP);
$("#NumberOfProcessors").text("CPU數(shù)量:" + json.CPUNum);
$("#ProcessorType").text("CPU類型:" + json.CPUType);
$("#ProcessorLevel").text("CPU級(jí)別:" + json.CPULevel);
$("#MemoryLoad").text("內(nèi)存使用率:" + json.MemoryLoad);
$("#TotalPhys").text("物理內(nèi)存共有:" + json.MemoryTotalPhys);
$("#AvailPhys").text("可使用的物理內(nèi)存有:" +
$("#Date").text("服務(wù)器時(shí)間:" + json.DateTime);
$("#cpu").text("CPU平均使用率:" + json.CPULoad);
});
}
東西很簡單,寫完以后用VisualStudio直接運(yùn)行,發(fā)現(xiàn)取到并顯示出來的服務(wù)器名和地址都是127.0.0.1,所以就想在IIS上部署一下看看。開發(fā)的機(jī)器是Win7,自帶的是IIS7,跟IIS6差別太大了。好不容易部署好了以后,瀏覽頁面發(fā)現(xiàn)沒有任何信息顯示出來,在Visual Studio開調(diào)試,發(fā)現(xiàn)ashx頁根本沒有被調(diào)用。
下面我們說說解決辦法:
就是在IIS7中你的網(wǎng)站的

里面右上角

“添加托管處理程序”中加上你的ashx。

這里直接在IIS里面加了,發(fā)現(xiàn)還是不好使。下面說說配置:
<system.webServer>
<handlers>
<addname="Custom Handler" path="*.sample"verb="*" type="HelloWorldHandler"
resourceType="Unspecified" />
</handlers>
</system.webServer>
拷過來再說,扔進(jìn)我的web.config改吧改吧,你要用Synchronous HTTPHandlers 不是建ashx了,而是在App_Code里建一個(gè)類,然后繼承、實(shí)現(xiàn)IHttpHandler
usingSystem.Web;
public class HelloWorldHandler : IHttpHandler
{
public HelloWorldHandler()
{
}
public voidProcessRequest(HttpContext context)
{
HttpRequestRequest = context.Request;
HttpResponse Response = context.Response;
// This handler is called whenever a file ending
// in .sample is requested. A file with that extension
// does not need to exist.
Response.Write("Hello Handler!");
}
public boolIsReusable
{
// To enable pooling, return true here.
// This keeps the handler in memory.
get { return false; }
}
}
然后呢,配置web.config。這里比較麻煩,有三種配置方式。
IIS6:
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="*.sample"
type="HelloWorldHandler"/>
</httpHandlers>
</system.web>
</configuration>
IIS7是分兩種工作模式經(jīng)典模式和集成模式,所以配置也是分兩種的。
經(jīng)典模式是為了與之前的版本兼容,使用ISAPI擴(kuò)展來調(diào)用ASP.NET運(yùn)行庫,原先運(yùn)行于IIS6.0下的Web應(yīng)用程序遷移到IIS7.0中只要將應(yīng)用程序配置成經(jīng)典模式,代碼基本不用修改就可以正常運(yùn)行。
配置如下
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="*.sample"
type="HelloWorldHandler"/>
</httpHandlers>
</system.web>
<system.webServer>
<handlers>
<add verb="*" path="*.sample"
name="HelloWorldHandler"
type="HelloWorldHandler"
modules="IsapiModule"/>
</handlers>
</system.webServer>
</configuration>
集成模式是一種統(tǒng)一的哀求處理管道,它將ASP.NET請(qǐng)求管道與IIS核心管道組合在一起,這種模式能夠提供更好的性能,能夠?qū)崿F(xiàn)配置和治理的模塊化,而且增加了使用托管代碼模塊擴(kuò)展IIS時(shí)的靈活性。
配置
<configuration>
<system.webServer>
<handlers>
<add verb="*" path="*.sample"
name="HelloWorldHandler"
type="HelloWorldHandler"/>
</handlers>
</system.webServer>
</configuration>
關(guān)于配置我要解釋幾句,name和type就不用說,verb不知道啥意思,照寫就行;path這個(gè)節(jié)里面的值是可以指定的,現(xiàn)在這樣*.sample在測試的時(shí)候,你就要指向test.Sample。如果你有多個(gè)Handler的話就不能這么指定了,最好是指定一個(gè)名字比如:
<add verb="*" path="HelloWorld.sample" name="HelloWorldHandler" type="HelloWorldHandler"/>
<add verb="*" path="HelloHeaven.sample" name="HelloHeavenHandler" type="HelloHeavenHandler"/>
寫完配置以后就可以測試一下自己的Handler了,
測試地址如下
http://localhost/HttpHandler/test.sample
當(dāng)然你要是設(shè)置了名字就可以用
http://localhost/HttpHandler/ HelloWorld.sample
http://localhost/HttpHandler/ HelloHeaven.sample
用的時(shí)候也就變成了
$.getJSON("HandlerHelloWorld.sample?format=json&jsoncallback=?",……下面是本文的疑問?用類寫Handler的話那ashx呢?怎么用��?
添加新文件的時(shí)候一般處理程序(ashx)還是可以選的。
還有就是iis6和iis7要寫不同的三種配置,有沒有通用的寫法?不用具體非的指定某種IIS。
- 介紹服務(wù)器安全熱點(diǎn)12項(xiàng)技術(shù)
- Web網(wǎng)關(guān)的安全和性能
- 避免危害DNS服務(wù)器安全部署的七宗罪
- web中緩存的使用方法
- 服務(wù)器管理最容易犯的十大錯(cuò)誤
- 自定義FTP 體驗(yàn)極速的下載快感
- RAID0、RAID1、RAID5磁盤陣列的區(qū)別
- 圖文詳解服務(wù)器返回的各狀態(tài)碼
- 利用OpenIPMI監(jiān)控服務(wù)器溫度
- DNS高級(jí)服務(wù)器選項(xiàng)
- apache防盜鏈的兩種實(shí)現(xiàn)方法
- 在多臺(tái)服務(wù)器上簡單實(shí)現(xiàn)Redis的數(shù)據(jù)主從復(fù)制
- 相關(guān)鏈接:
- 教程說明:
負(fù)載集群教程-和你一起分析Http Handler從IIS6到IIS7的使用問題
。