伸进女同桌乳沟里摸爽了,小雪解开乳罩给老杨摸,少妇被按摩师摸高潮了,亲嘴扒胸摸屁股激烈视频,强摸秘书人妻大乳BD,摸BBB揉BBB揉BBB视频

新疆軟件開發(fā)

本站首頁 軟件開發(fā) 成功案例 公司新聞 公司簡介 客服中心 軟件技術(shù) 網(wǎng)站建設(shè)
  您現(xiàn)在的位置: 新疆二域軟件開發(fā)公司 >> .Net技術(shù) >> 文章正文

aspx文件編譯成DLL有什么好處

aspx文件可以編譯成DLL嗎?如何編譯aspx文件成DLL呢?aspx文件編譯成DLL有什么好處呢?微軟支持把a(bǔ)spx編譯成DLL嗎?為什么我們要把a(bǔ)spx文件編譯成DLL呢?下面為你講解把單個aspx文件編譯成DLL

從上一節(jié)微軟公開描述的“言外之意”來看,微軟是不支持讓開發(fā)人員直接把a(bǔ)spx文件編譯成DLL的。然而,Asp.Net高級界面技術(shù)(服務(wù)端HTML控件,WEB控件等等)都是需要通過aspx文件才能展現(xiàn)出來的,如果為了DLL的運行效率而放棄aspx的高級特性,則顯然是得不嘗失的。 

現(xiàn)在靜下心來分析一下:

csc編譯器只是一個c#語言的編譯器,它只能對符合C#語言規(guī)范的文件進(jìn)行編譯,而aspx文件的格式顯然不符合c#語言規(guī)范,所以csc編譯器是無法對aspx源文件進(jìn)行編譯的。

因此,要想把a(bǔ)spx文件編譯成dll文件,必然要先把a(bǔ)spx文件轉(zhuǎn)化成csc編譯器能識別的cs源文件。那么用什么工具來進(jìn)行轉(zhuǎn)換呢?雖然我深信這個工具一定是隱藏在.Net Framework里面,但在查閱了大量的Asp.Net及.Net的公開文檔及參考手冊,資料之后,仍找不到相關(guān)資料。 

呵呵,天無絕人之路,一個偶然的機(jī)會,還是讓我發(fā)現(xiàn)了這個秘密。 來看看源文件ex2.aspx: 

/* 源文件:ex2.aspx 開始 */ 

<%@ Page Language="c#" %> 

<script runat="server">

 /*

你沒看錯,下一行就是“abcdefg”,正是這一行,才讓我有機(jī)會寫出本篇文章^_^;

在文中,我把這一行稱作“代碼陷阱”

*/

 abcdefg // 代碼陷阱 

void Page_Load(Object src, EventArgs args)

{

if( !IsPostBack ) NoteLabel.Text = "請輸入您的姓名:";

}

 void OnNameSubmit(Object src, EventArgs args)

{

string name = f_Name.Value;

NoteLabel.Text = (name=="") ? "姓名不能為空" : name +",您好。歡迎光臨!";

}

</script>

 <html>

<body>

<form runat="server">

<h1>DllTest - Ex2(例2)</h1>

<hr>

<asp:label runat="server" id="NoteLabel" style="color:red; font-weight:bold" />

<input runat="server" id="f_Name" size="8">

<button runat="server" onserverclick="OnNameSubmit">確定</button>

</form>

</body>

</html> 

/* 源文件:ex2.aspx 結(jié)束 */ 

如果把“代碼陷阱”注釋掉或刪掉,那么ex2.aspx就是一個簡單的Asp.Net文件,用IE瀏覽此頁面可以發(fā)現(xiàn)它能正常工作,F(xiàn)在讓我們打開“陷阱”,來看看Asp.Net到底返回了什么?

 返回的是一個“編譯錯誤”的頁面,報告源文件無法通過編譯。讓我們感興趣的是該頁面最下方的一個名為“顯示完整的編譯源”的超鏈接,點擊些鏈接,就能看到這個由ex2.aspx轉(zhuǎn)換而來的cs源文件(“完整的編譯源”)的完整內(nèi)容。把這部分“完整的編譯源”去掉前面的行號信息和其它的一些編譯開關(guān)(主要是#line編譯命令),并關(guān)閉那個可愛的“代碼陷阱”(用//把它注釋掉或直接把它delete也行),整理后保存為ex2_aspx.cs:

 /* 源文件:ex2_aspx.cs 開始 */

 

/*

從下面的說明可以看出,確實有一個未公開的工具來完成把a(bǔ)spx文件轉(zhuǎn)化成cs源文件

*/

//------------------------------------------------------------------------------

// <autogenerated>

// This code was generated by a tool.

// Runtime Version:1.0.3705.0

//

// Changes to this file may cause incorrect behavior and will be lost if

// the code is regenerated.

// </autogenerated>

//------------------------------------------------------------------------------

 /*

奇怪的是:命名空間居然是ASP而不是ASPX

建議把該名稱改成適合應(yīng)用程序的名稱,防止命名沖突,例如針對本文,可以改成DllTest

這里沒改是為了讓大家看清它的原貌

*/

namespace ASP {

using System;

using System.Collections;

using System.Collections.Specialized;

using System.Configuration;

using System.Text;

using System.Text.RegularExpressions;

using System.Web;

using System.Web.Caching;

using System.Web.SessionState;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

 /*

1、注意一下類名的構(gòu)成,如果必要,可以把它改成有意義的名稱,例如針對本文,可以改成Ex2Page

2、注意它的基類。Syste.Web.UI.Page實現(xiàn)了IHttpHandler接口,由于要訪問Session,所以也實現(xiàn)了IRequiresSessionState接口。

*/

public class ex2_aspx : System.Web.UI.Page, System.Web.SessionState.IRequiresSessionState {

 private static int __autoHandlers;

protected System.Web.UI.WebControls.Label NoteLabel;

protected System.Web.UI.HtmlControls.HtmlInputText f_Name;

protected System.Web.UI.HtmlControls.HtmlButton __control3;

protected System.Web.UI.HtmlControls.HtmlForm __control2;

private static bool __intialized = false;

private static System.Collections.ArrayList __fileDependencies;

 /* 現(xiàn)在可以關(guān)掉“陷阱”了 */

// abcdefg

 void Page_Load(Object src, EventArgs args)

{

if( !IsPostBack ) NoteLabel.Text = "請輸入您的姓名: ";

}

 void OnNameSubmit(Object src, EventArgs args)

{

string name = f_Name.Value;

 

NoteLabel.Text = (name=="") ? "姓名不能為空" : name +",您好。歡迎光臨!";

}

 /* 構(gòu)造函數(shù) */

public ex2_aspx() {

System.Collections.ArrayList dependencies;

if ((ASP.ex2_aspx.__intialized == false)) {

dependencies = new System.Collections.ArrayList();

 /*

應(yīng)該把下面這行注釋掉,讓DLL成為一個無依賴的獨立文件

防止在DLL運行時再次去查找、比較它的“依賴”文件的新舊

*/

//dependencies.Add("W:\\wwwroot\\dlltest\\ex2.aspx");

ASP.ex2_aspx.__fileDependencies = dependencies;

ASP.ex2_aspx.__intialized = true;

}

}

 

protected override int AutoHandlers {

get {

return ASP.ex2_aspx.__autoHandlers;

}

set {

ASP.ex2_aspx.__autoHandlers = value;

}

}

 

protected System.Web.HttpApplication ApplicationInstance {

get {

return ((System.Web.HttpApplication)(this.Context.ApplicationInstance));

}

}

 

public override string TemplateSourceDirectory {

get {

return "/dlltest";

}

}

 

private System.Web.UI.Control __BuildControlNoteLabel() {

System.Web.UI.WebControls.Label __ctrl;

__ctrl = new System.Web.UI.WebControls.Label();

this.NoteLabel = __ctrl;

__ctrl.ID = "NoteLabel";

((System.Web.UI.IAttributeAccessor)(__ctrl)).SetAttribute("style", "color:red; font-weight:bold");

return __ctrl;

}

 private System.Web.UI.Control __BuildControlf_Name() {

System.Web.UI.HtmlControls.HtmlInputText __ctrl;

__ctrl = new System.Web.UI.HtmlControls.HtmlInputText();

this.f_Name = __ctrl;

__ctrl.ID = "f_Name";

__ctrl.Size = 8;

return __ctrl;

}

 private System.Web.UI.Control __BuildControl__control3() {

System.Web.UI.HtmlControls.HtmlButton __ctrl;

__ctrl = new System.Web.UI.HtmlControls.HtmlButton();

this.__control3= __ctrl;

System.Web.UI.IParserAccessor __parser = ((System.Web.UI.IParserAccessor)(__ctrl));

__parser.AddParsedSubObject(new System.Web.UI.LiteralControl("確定"));

__ctrl.ServerClick += new System.EventHandler(this.OnNameSubmit);

return __ctrl;

}

 

private System.Web.UI.Control __BuildControl__control2() {

System.Web.UI.HtmlControls.HtmlForm __ctrl;

__ctrl = new System.Web.UI.HtmlControls.HtmlForm();

this.__control2= __ctrl;

System.Web.UI.IParserAccessor __parser = ((System.Web.UI.IParserAccessor)(__ctrl));

__parser.AddParsedSubObject(new System.Web.UI.LiteralControl("\r\n <h1>DllTest - Ex2(例2)</h1>\r\n <hr>\r\n "));

this.__BuildControlNoteLabel();

__parser.AddParsedSubObject(this.NoteLabel);

__parser.AddParsedSubObject(new System.Web.UI.LiteralControl("\r\n "));

this.__BuildControlf_Name();

__parser.AddParsedSubObject(this.f_Name);

__parser.AddParsedSubObject(new System.Web.UI.LiteralControl("\r\n "));

this.__BuildControl__control3();

__parser.AddParsedSubObject(this.__control3);

__parser.AddParsedSubObject(new System.Web.UI.LiteralControl("\r\n "));

return __ctrl;

}

 private void __BuildControlTree(System.Web.UI.Control __ctrl) {

System.Web.UI.IParserAccessor __parser = ((System.Web.UI.IParserAccessor)(__ctrl));

__parser.AddParsedSubObject(new System.Web.UI.LiteralControl("\r\n\r\n<html>\r\n<body>\r\n "));

this.__BuildControl__control2();

__parser.AddParsedSubObject(this.__control2);

__parser.AddParsedSubObject(new System.Web.UI.LiteralControl("\r\n</body>\r\n</html>\r\n"));

}

 protected override void FrameworkInitialize() {

this.__BuildControlTree(this);

this.FileDependencies = ASP.ex2_aspx.__fileDependencies;

this.EnableViewStateMac = true;

}

 

public override int GetTypeHashCode() {

return -11574299;

}

}

}

 

/* 源文件:ex2_aspx.cs 結(jié)束 */

 相信大家在分析了這個文件之后,會對Asp.Net運行原理有更進(jìn)一步的認(rèn)識(與本文無關(guān),不詳述)。

 在命令行狀態(tài),用如下的編譯命令把ex2_aspx.cs編譯成ex2.dll,并把它存放在bin目錄下。

csc /t:library /out:bin\ex2.dll ex2_aspx.cs 

在配置文件web.config中添加aspx->dll映射,即在system.web節(jié)的httpHandlers添加下面一行:

<add verb="*" path="dlltest2.aspx" type="ASP.ex2_aspx, ex2" /> 

 現(xiàn)在當(dāng)瀏覽器訪問http://localhost/dlltest/dlltest2.aspx時,就如同訪問ex2.aspx一樣。當(dāng)然,現(xiàn)在即使ex2.aspx不存在,或者已經(jīng)更新過,也不會對頁面訪問有任何影響,除非重新生成bin\ex2.dll。

 

作者:未知 | 文章來源:5iaspx.com | 更新時間:2007-10-20 11:45:51

  • 上一篇文章:

  • 下一篇文章:

  • 相關(guān)文章:
    沒有相關(guān)文章
    軟件技術(shù)
    · 開發(fā)語言
    · Java技術(shù)
    · .Net技術(shù)
    · 數(shù)據(jù)庫開發(fā)
    最新文章  
    ·.net技術(shù) asp.net MVC3 Vi
    ·.net將視頻文件格式轉(zhuǎn)換成
    ·NET Framework 2.0 Servic
    ·如何動態(tài)修改winform的app
    ·asp,net軟件結(jié)構(gòu)設(shè)計和相關(guān)
    ·學(xué)習(xí)怎樣使用ASP.NET中的虛
    ·,net基礎(chǔ)類的學(xué)習(xí):system
    ·.net學(xué)習(xí):c#事件的深入分
    ·Facade Pattern學(xué)習(xí)總結(jié)
    ·C#如何設(shè)置或者獲取目錄的
    ·如何使用XSL來定義ASP.NET
    ·理解WCF Data Contract契約
    ·如何能在.net2.0開發(fā)的控件
    ·模式怎樣使用,講解模式的
    ·如何解決Menu菜單被frame遮
    關(guān)于我們 | 軟件開發(fā) | 下載試用 | 客服中心 | 聯(lián)系我們 | 友情鏈接 | 網(wǎng)站地圖 | 新疆電子地圖 | RSS訂閱
    版權(quán)所有 © 2016 新疆二域軟件開發(fā)網(wǎng) www.zgna.net All Rights Reserved 新ICP備14003571號
    新疆軟件開發(fā)總機(jī):0991-4842803、4811639.
    客服QQ:596589785 ;地址:新疆烏魯木齊北京中路華聯(lián)大廈A-5C 郵編:830000
     
    鄂州市| 林西县| 莎车县| 东阳市| 永善县| 康乐县| 唐海县| 阜康市| 迁西县| 东丽区| 黑山县| 樟树市| 茌平县| 博兴县| 乌兰察布市| 洪江市| 肃宁县| 巫溪县| 邢台县| 通海县| 区。| 绿春县| 海晏县| 富顺县| 寿宁县| 乌海市| 大埔县| 沾化县| 于田县| 海南省| 镇赉县| 巫山县| 勐海县| 浦北县| 温宿县| 芒康县| 琼海市| 南召县| 岳阳市| 炎陵县| 乐平市|