1. 程式人生 > >ASP.NET 截獲伺服器生成的將要傳送到客戶端的html的方法

ASP.NET 截獲伺服器生成的將要傳送到客戶端的html的方法

有時候我們需要在將伺服器端生成的html傳送帶客戶端之前對這些html進行操作,比如生成靜態html加之儲存、改變生成的html中的某些內容等等,那麼久可以通過如下的方案解決。

我總結了兩種方式,個人覺得比較好用,一種是重寫Page.Render()方法。一種是通過IHttpmodule來實現。

1)這種方法適合控制某個頁面,在.aspx.cs裡面重寫Render()方法即可,該方法提供一個HtmlTextWriter 型別引數,裡面就包含了將要傳送到客戶端的內容,根據asp.net宣告週期知道Render階段是在load事件之後觸發的,所以,這個方法很適合完成我們想要的效果。下面是一個簡單的例子:

   1:      protected override void Render(HtmlTextWriter writer)
   2:      {
   3:          TextWriter tempWriter = new StringWriter();
   4:          base.Render(new HtmlTextWriter(tempWriter));
   5:          string str = tempWriter.ToString(); //這個str裡面已經包含了html。
   6:   
   7:         //然後可以對這個字串進行處理,比如儲存、替換等等
   8:          writer.Write(str); //再將修改好的html傳送到客戶端
   9:      }

2)這種方法在應用級控制,更適合需要對某一類頁面進行處理,或者所有頁面比較方面。要註冊介面的PreSendRequestContent方法,下面為一個例子,有關IHttpmodule內容,本文不重複了:

   1:          void context_PreSendRequestContent(object sender, EventArgs e)
   2:          {
   3:              HttpApplication app = (HttpApplication)sender;
   4:              HttpContext context = app.Context;
   5:              string url = context.Request.RawUrl;
   6:              StringWriter wr = new StringWriter();
   7:              context.Server.Execute(url, wr);
   8:              string htmlCon = wr.ToString();//字串htmlCon 已經包含了將要傳送到客戶端的html。
   9:   
  10:          }

3) 通過替換Response.Filter也可以實現。

相關推薦

ASP.NET 截獲伺服器生成將要傳送客戶html方法

有時候我們需要在將伺服器端生成的html傳送帶客戶端之前對這些html進行操作,比如生成靜態html加之儲存、改變生成的html中的某些內容等等,那麼久可以通過如下的方案解決。 我總結了兩種方式,個人覺得比較好用,一種是重寫Page.Render()方法。一種是通過IHttpmodule來實現。 1)這種方法

asp.net Core 使用過濾器判斷請求客戶是否為移動,並實現PC和移動請求對映和自動跳轉

很多時候我們做網站時單純的用bootstrap等前端框架實現的前端自適應帶給使用者的體驗並不太好,所以為了提高使用者體驗會專門針對PC端網頁重新設計一套移動端網頁,但是怎麼才能做到在移動端訪問PC頁面的時候返回對應的移動端頁面,而不是PC端頁面呢?下面我們就簡單的進行介紹。主要技術是asp.net core。

ASP.NET Core 2.x中獲取客戶IP地址

一、前言 大家也知道服務端請求時我們獲取的IP地址是包含在請求頭中,因此這也大大便利了IP的獲取。 在ASP.NET中,可以通過以下方式獲取客戶端的IP地址。 HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]

asp.net core IdentityServer4 實現 Client credentials(客戶憑證)

前言 OAuth 2.0預設四種授權模式(GrantType) 授權碼模式(authorization_code) 簡化模式(implicit) 密碼模式(resource owner password credentials) 客戶端模式(client_credentials) 本章主要介紹客戶端模

ASP.NET中C#生成二維碼

保存 mss 軟件 clear 所有 str drawing for visual ASP.NET中用C#語言編寫網頁,將自己輸入的文字生成二維碼。 工具/原料 已安裝好VS2010或其他版本VS軟件的電腦一臺 1、新建 1

ASP.NET Web 伺服器控制元件事件模型

ASP.NET 中有一個重要功能,允許您通過與客戶端應用程式中類似的、基於事件的模型來對網頁進行程式設計。舉一個簡單的例子,例如,可以向 ASP.NET 網頁中新增一個按鈕,然後為該按鈕的 Click 事件編寫事件處理程式。儘管這種情況在僅使用客戶端指令碼(在動態 HTML 中處理按鈕的 oncli

asp.net core 2.0 郵件傳送服務

  網上找了一下,發現一個很不錯的郵件傳送服務Mailgun,首先要註冊Mailgun賬號,獲得apikey以及domainame;   然後專案中安裝nuget:      配置並註冊服務:      public interface IEmailSender { T

Go語言(伺服器開發):客戶伺服器傳送資料並接收返回資料

客戶端向伺服器傳送資料並接收返回資料。 示例程式碼: package mysocket import ( "fmt" "io" "net" ) func MySocketBase() { var ( host = "www.apache.org" p

使用Jexus+Mono在FreeBSD上搭建asp.net web伺服器

前言:如果要談起如何搭建asp.net執行環境,我相信很多人會想到使用Windows Server系統和IIS來搭建,不可否認,asp.net是微軟出的東西,當然用微軟的系統搭建最合適了。如果你又想使用asp.net,又想使用 FreeBSD,那麼是不是就行不通了呢?答案當然是否定的。因為我們有Mono,有了

asp.net中ashx生成驗證碼程式碼放在Linux(centos)主機上訪問時無法顯示問題

最近有個專案加入了驗證碼功能,就從自己部落格以前的程式碼中找到直接使用,直接訪問驗證碼頁面報錯如下: Application Exception System.ArgumentException The requested FontFamily could not be found [GDI+

【B/S】ASP.NET---驗證碼-生成和切換

驗證碼是什麼? 驗證碼(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自動區分計算機和人類的圖靈測試)的縮寫,是一種區分使用者是計算機還是人的公共全自動程式

Qt5 基於TCP傳輸的傳送/接收檔案伺服器(支援多客戶

一、實現功能 1、伺服器端選擇待發送的檔案,可以是多個 2、開啟伺服器,支援多客戶端接入,能夠實時顯示每個客戶端接入狀態 3、等待所有客戶端都處於已連線狀態時,依次傳送檔案集給每個客戶端,顯示每個客戶端傳送進度 4、傳送完成後等待接收客戶端發回的檔案,顯示接收進度 5、關閉

簡單的Http伺服器監聽和客戶傳送

伺服器端: static void Main(string[] args) { StartTcpListener(); } static void StartTcpListener()

ASP.NET根據URL生成網頁縮圖示例程式(C#語言)

工作中可能馬上要用到根據URL生成網頁縮圖功能,提前做好準備。 在網上找了份原始碼,但是有錯誤:當前執行緒不在單執行緒單元中,因此無法例項化 ActiveX 控制元件“8856f961-340a-11d0-a9”,解決後執行良好,記錄在此備用! 起始頁:Default

ASP.NET MVC 伺服器下載檔案

前端程式碼: <a id="upload" href="@Url.Content("~/goods/DownLoadGoodsVideo?n_name={檔案舊名稱}&o_name={檔

asp.net伺服器,ionic2手機,怎樣引入極光推送?

1去極光官網註冊,獲取app_key 2伺服器端,要做的工作是引入官方的dll,呼叫dll裡面的方法。其實這個dll做的工作就是拼接字串,傳送post請求,只不過dll給我們封裝好了,用起來方便。 dll檔案參考連結,https://github.com/jpush/jpu

asp.net匯出Excel生成多個Sheet

using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using System;using System.Collections.Generic;using System.IO;using System.Linq;using Sy

ASP.Net 獲取伺服器的當前日期時間的綜合處理函式!

        aaa = DateTime.Now.ToString("dddd");//中文星期顯示                  int bbb=Convert.ToInt32(DateTime.Now.DayOfWeek);  //顯示星期數字System.Da

ASP.NET DataSet資料生成Excel文件匯出下載

public partial class am_ElectronicInvoinceExportExcel : BasePage { protected void Page_Load(object sender, EventArgs e)

部署 ASP .NET CORE 伺服器安裝軟體步驟問題

部署.NET CORE網站的時候,裝東西死活不成功,後來據說要這樣嚴格按照順序裝 dotnet-runtime-2.0.5-win-x64.exe  dotnet-sdk-2.1.4-win-x64.exe  DotNetCore.2.0.5-WindowsHosting.