激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - ASP.NET之自定義同步HTTP處理程序(圖文教程)

ASP.NET之自定義同步HTTP處理程序(圖文教程)

2019-10-15 10:48腳本之家 ASP.NET教程

自定義HTTP處理程序可以完全消除只能在申請這個文件才可以進行響應問題,它只是一個.cs的類文件,并且你只要按照很簡單的準備工作就可以獲得很多的靈活

一、前言

說來這片簡單的教程還真是碰巧,是剛好我在寫另一個頁指令的時候看到的。就跟著進來看了看是什么東西,發現比我們之前只會用.ashx,并且只能在申請這個文件才可以進行響應。這些似乎讓它變不靈活,不能讓我們靈活的應用。而自定義HTTP處理程序可以完全消除上面的問題,它只是一個.cs的類文件,并且你只要按照很簡單的準備工作就可以獲得很多的靈活度:

1.可以自定義用戶訪問何網頁時響應該文件并把數據呈現發送給客戶端 

2.可以對所有具有一致的后綴名的請求文件定義一個處理程序 

3.具有同步與異步選擇

我相信一定有人對于上面的說有一定不的理解,這里我需要解釋它的一個重要意義,那么大家就自然知道它的靈活所在了。

我們先舉例:

1.比如你訪問    http://www.****.com/web1.msll

你一定發現了問題所在.后綴名是 .msll 你瀏覽網頁到如今一定沒有見過。而這個的確就是自定義HTTP處理程序的一個特點所在,后綴名可以自己偽造。這個時候你一定會認為 web1 是那個 .cs 文件的名稱,但是結果是 web1 根本不是那個 .cs 文件的文件名.他們是通過綁定來實現的。比如我實現了一個  he.cs 的類,然后我將其綁定到  hehehe.ppd 那么當你訪問 http://www.*****.com/hehehe.ppd  那么響應這個頁面的是 he.cs 的輸出結果

2.我們還是假設你訪問  http://www.****.com/list1.ssm

                       http://www.****.com/list2.ssm

                       http://www.****.com/list3.ssm

   假如我告訴你這個三個看似不同的頁面其實都是一個 HTTP處理程序的輸出結果,這個其實很好理解,如果我寫了一個 bbsss.cs 的類,并且實現了有關功能。然后我將其綁定到 *.ssm 你可以發現這里是 *.ssm  這個時候你就按照你正常的思考,就是只要是對后綴名是 .ssm 頁面的申請都是使用同一個 bbsss.cs 類,這下是不是有趣了

二、注冊與綁定

   為什么要有這兩部呢?而且還是要注冊與綁定這兩個呢?

   答案是 你只寫一個類 vs是不可能知道你這個東西是干什么的,所以我們需要在 web.config 中注冊我們自定義的HTTP處理程序。而綁定則是讓iis知道我們這個站點中含有一個自定義的HTTP處理程序。(下面我將以 iis7 為例說明如何綁定)

1.注冊

復制代碼代碼如下:

<configuration> 
<system.web> 
<httpHandlers> 
<add verb="*" path="<!-- 這里寫需要綁定的客戶端申請的頁面(*.smm,*.ffs,web1.ffe) -->" type="<!-- 這里寫處理程序的類名 -->" 
</httpHandlers> 
</system.web> 
</configuration>


以上需要自行編寫的部分我都已使用注釋寫好

 

2.綁定( iis7 )

    1) 打開 iis7 -》 打開  網站  節點 -》 點擊你的網站的名稱

    2) 雙擊 ASP.NET之自定義同步HTTP處理程序(圖文教程)

    3) 點擊ASP.NET之自定義同步HTTP處理程序(圖文教程)

    4) ASP.NET之自定義同步HTTP處理程序(圖文教程)

    5) 最后點擊 確定 這樣在 iis 中的綁定就完成了(后面的完整例子我將會以文字介紹該過程)

三、關于類的實現注意點

   雖然我們介紹完了注冊與綁定,但還不是所有,關于類的實現也有一定的要求。根據MSDN文檔的說明必須實現 ProcessRequest 方法與 IsReusable 屬性

關于 ProcessRequest 可以暫時理解為 Page_Load (即使他比Page_Load更底層)

其次就是沒有內置的 Request 與 Response ,可能有些人要崩潰了那怎么寫啊,很簡單的問題沒有內置我們就自己去定義

IsReusable 的類型是 bool 類型,而且只要實現 get 不需要實現 set ,如果返回 true 表示使用線程池 如果為 false 表示不使用

關于這個類文件的放置也有要求,要放在App_Code 文件夾下(vs的站點中可以直接新建這個特殊的文件夾)

四、完整的例子(自行新建類)

1.

   以下為 HelloWorldHandler.cs 類的具體實現(放置在 App_Code 文件夾下)

復制代碼代碼如下:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

/// <summary> 
///HelloWorldHandler 的摘要說明 
/// </summary> 
public class HelloWorldHandler : IHttpHandler 

public HelloWorldHandler() 



public void ProcessRequest(HttpContext context) 

HttpRequest Request = context.Request; 
HttpResponse Response = context.Response; 
Response.Write("<html>"); 
Response.Write("<body>"); 
Response.Write("<h1>hello</h1>"); 
Response.Write("</body>"); 
Response.Write("</html>"); 


public bool IsReusable 

get 

return false; 


}


2.以下為 web.config 的內容

復制代碼代碼如下:

<httpHandlers> 
<add verb="*" path="*.sample" type="HelloWorldHandler" /> 
</httpHandlers>


3.IIS 配置(不要忘記把項目部署到 iis 中)

 

以下為具體配置

ASP.NET之自定義同步HTTP處理程序(圖文教程)

然后測試 http://localhost/SampleApplication/test.sample(端口為 80 時)

你就可以看到你的成果了

五、完結

到此你已經基本掌握了 自定義同步HTTP處理程序 ,當然這個只是一小部分,后面我們還會接觸到異步,因為同步在用戶訪問量很大的情況下將會使服務器資源迅速耗盡,而且也會讓降低用戶的實用性

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黄污视频在线看 | 国产免费网站视频 | 国产视频在线一区 | 国产欧美在线观看不卡一 | 91精品国产日韩91久久久久久360 | 国产chinesehd精品91 | 亚洲网在线观看 | 午夜噜噜噜 | 国产欧美精品一区二区三区四区 | 国产一区二区亚洲 | 成人午夜在线免费观看 | 在线播放亚洲精品 | 久久骚 | 91嫩草丨国产丨精品入口 | 精品国产一区二区三区四 | 亚洲成人福利在线观看 | 欧美性视频一区二区 | 免费在线观看一级片 | 偿还电影免费看 | 欧美一级做一级爱a做片性 毛片电影网址 | 特级黄色一级毛片 | 久久久久国产视频 | 深夜福利视频免费观看 | 91九色福利 | 成人毛片视频免费 | 性大片免费看 | 亚洲福利在线视频 | 国产成人在线看 | 亚洲国产午夜精品 | 国产成人精品一区二区视频免费 | 国产露脸精品爆浆视频 | 懂色av懂色aⅴ精彩av | 成人 日韩 | 国产羞羞视频在线观看免费应用 | 中国a级黄色片 | 91精品国产777在线观看 | 成人午夜精品久久久久久久蜜臀 | 92看片淫黄大片一级 | 国产一级二级视频 | 日本黄色免费观看视频 | 久久视频精品 |