当前位置:首页 » 编程软件 » aspnet如何预编译

aspnet如何预编译

发布时间: 2023-01-17 01:36:47

㈠ 如何构建ASP.NET 的运行环境

安装IIS6.0,在IIS6.0的配合下我们如何来安装和部署ASP.net环境,以及它们之间关系。

1、使用"配置您的服务器向导"安装 IIS6.0

1)从"开始"菜单,单击"管理您的服务器"。
2)在"管理您的服务器角色"下,单击"添加或删除角色"。
3)阅读"配置您的服务器向导"中的预备步骤,然后单击"下一步"。
4)在"服务器角色"下,单击"应用程序服务器 (IIS,ASP.NET)",然后单击"下一步"。
5)阅读概要信息,然后单击"下一步"。
6)单击"完成"。
2、使用控制面板安装 IIS、添加组件或删除组件

1)从"开始"菜单,单击"控制面板"。
2)双击"添加或删除程序"。
3)单击"添加/删除 Windows 组件"。
4)在"组件"列表框中,单击"应用程序服务器"。
5)单击"详细信息"。
6)单击"Internet 信息服务管理器"。
7)单击"详细信息"以查看 IIS 可选组件的列表。
8)选择要安装的所有可选组件。
9)单击"确定",直到返回到"Windows 组件向导"。
10)单击"下一步",然后完成"Windows 组件向导"。

三、在Windows 2003 Server 安装 ASP.NET

Windows Server 2003 家族利用 ASP.NET 和 IIS 集成改善了开发人员体验。ASP.NET 识别大多数 ASP 代码,同时为创建可作为 Microsoft .NET Framework 的一部分工作的企业级 Web 应用程序提供更多的功能。使用ASP.NET 允许我们充分利用公共语言运行库的功能,如类型安全、继承、语言互操作性和版本控制。IIS 6.0 还为最新的 Web 标准,包括 XML、简单对象访问协议 (SOAP) 和 Internet 协议版本 6.0 (IPv6.0),提供支持。

ASP.NET 是一个统一的 Web 开发平台,它提供开发人员创建企业级 Web 应用程序所需的服务。尽管 ASP.NET 的语法基本上与 ASP 兼容,但是它还提供了一个新的编程模型和基础结构以提高应用程序的安全性、缩放性和稳定性。通过逐渐向现有的 ASP 应用程序增加 ASP.NET 功能,我们可以自由地使其增大。ASP.NET 是一个编译的、基于 .NET 的环境;我们可以用任何 .NET 兼容的语言(包括 Microsoft Visual Basic.NET,Microsoft Visual C# 和 Microsoft JScript .NET)创作应用程序。另外,整个 Microsoft .NET Framework 可用于任何 ASP.NET 应用程序。开发人员可以很容易地从这些技术受益,这些技术包括管理的公共语言运行库环境、类型安全、继承等。

ASP.NET的优点如下:

1)可管理性: ASP.NET 使用基于文本的、分级的配置系统,简化了将设置应用于服务器环境和 Web 应用程序的工作。因为配置信息是存储为纯文本的,因此可以在没有本地管理工具的帮助下应用新的设置。配置文件的任何变化都可以自动检测到并应用于应用程序。
2)安全: ASP.NET 为 Web 应用程序提供了默认的授权和身份验证方案。开发人员可以根据应用程序的需要很容易地添加、删除或替换这些方案。
3)易于部署: 通过简单地将必要的文件复制到服务器上,ASP.NET 应用程序即可以部署到该服务器上。不需要重新启动服务器,甚至在部署或替换运行的已编译代码时也不需要重新启动。
4)增强的性能: ASP.NET 是运行在服务器上的已编译代码。与传统的 Active Server Pages (ASP) 不同,ASP.NET 能利用早期绑定、实时 (JIT) 编译、本机优化和全新的缓存服务来提高性能。
5)灵活的输出缓存: 根据应用程序的需要,ASP.NET 可以缓存页数据、页的一部分或整个页。缓存的项目可以依赖于缓存中的文件或其他项目,或者可以根据过期策略进行刷新。
6)国际化: ASP.NET 在内部使用 Unicode 以表示请求和响应数据。可以为每台计算机、每个目录和每页配置国际化设置。
7)移动设备支持: ASP.NET 支持任何设备上的任何浏览器。开发人员使用与用于传统的桌面浏览器相同的编程技术来处理新的移动设备。
8)扩展性和可用性: ASP.NET 被设计成可扩展的、具有特别专有的功能来提高群集的、多处理器环境的性能。此外,Internet 信息服务 (IIS) 和 ASP.NET 运行时密切监视和管理进程,以便在一个进程出现异常时,可在该位置创建新的进程使应用程序继续处理请求。
9)跟踪和调试: ASP.NET 提供了跟踪服务,该服务可在应用程序级别和页面级别调试过程中启用。可以选择查看页面的信息,或者使用应用程序级别的跟踪查看工具查看信息。在开发和应用程序处于生产状态时,ASP.NET 支持使用 .NET Framework 调试工具进行本地和远程调试。当应用程序处于生产状态时,跟踪语句能够留在产品代码中而不会影响性能。
10)与 .NET Framework 集成: 因为 ASP.NET 是 .NET Framework 的一部分,整个平台的功能和灵活性对 Web 应用程序都是可用的。也可从 Web 上流畅地访问 .NET 类库以及消息和数据访问解决方案。ASP.NET 是独立于语言之外的,所以开发人员能选择最适于应用程序的语言。另外,公共语言运行库的互用性还保存了基于 COM 开发的现有投资。
11)与现有 ASP 应用程序的兼容性: ASP 和 ASP.NET 可并行运行在 IIS Web 服务器上而互不冲突;不会发生因安装 ASP.NET 而导致现有 ASP 应用程序崩溃的可能。ASP.NET 仅处理具有 .aspx 文件扩展名的文件。具有 .asp 文件扩展名的文件继续由 ASP 引擎来处理。然而,应该注意的是会话状态和应用程序状态并不在 ASP 和 ASP.NET 页面之间共享。

安装 ASP.NET

在 Windows Server 2003 家族、Windows 2000 (Professional、Server 和 Advanced Server)以及 Windows XP Professional 上的客户端和服务器应用程序都支持 ASP.NET。

运行 Microsoft Windows Server 2003 家族成员的服务器可以配置为应用程序服务器,并将 ASP.NET 作为在配置应用程序服务器角色时可以启用的选项。要向产品服务器部署 ASP.NET Web 应用程序,在分发应用程序之前,必须确保在产品服务器中启用了 ASP.NET 和 IIS 角色。

1、使用"配置您的服务器"向导在运行 Windows Server 2003 的服务器中安装 ASP.NET

1)从"开始"菜单中,单击"管理您的服务器";在"管理您的服务器"窗口中,单击"添加或删除角色"。
2)在"配置您的服务器向导"中,单击"下一步",并在"服务器角色"对话框中,选中"应用程序服务器 (IIS、ASP.NET)",然后单击"下一步"。
3)在"应用程序服务器选项"对话框中,选中"启用 ASP.NET"复选框,单击"下一步",然后再单击"下一步"。
4)如有必要,请将 Windows Server 2003 安装 CD 插入 CD-ROM 驱动器,然后单击"下一步"。
5)当安装完成时,单击"完成"。

2、在运行 Windows Server 2003 的服务器中使用"添加或删除程序"安装 ASP.NET

1)从"开始"菜单中,指向"控制面板",然后单击"添加或删除程序"。
2)在"添加或删除程序"对话框中,单击"添加/删除 Windows 组件"。
3)在"Windows 组件"向导中的"组件"中,选中"应用程序服务器"复选框,然后单击"下一步"。
4)当在"Windows 组件"向导中完成对 Windows Server 2003 的配置时,单击"完成"。

3、在运行 Windows Server 2003 的服务器中的 IIS 管理器中启用 ASP.NET

1)从"开始"菜单中,单击"运行"。
2)在"运行"对话框中的"打开"框中,键入 inetmgr,然后单击"确定"。
3)在 IIS 管理器中,展开本地计算机,然后单击"Web 服务扩展"。
4)在右侧窗格中,右键单击"ASP.NET"然后单击"允许"。ASP.NET 的状态变为"允许"。

ASP.NET Web 应用程序的布局

ASP.NET 应用程序被定义为可从 Web 服务器上的虚拟目录及其子目录中调用的所有文件和可执行码。其中可以包含网页(.html 文件)、Web 表单页面(.aspx 文件)、Web 表单用户控件(.ascx 文件)、XML Web 服务(.asmx 文件)、HTTP 处理程序、HTTP 模块和其他文件(如图像和配置文件)。现在使用的所有与 Microsoft .NET Framework 版本相关的脚本映射也都是 ASP.NET 应用程序的一部分。ASP.NET 应用程序必须位于 IIS 虚拟目录(也称为应用程序根目录)中。ASP.NET 应用程序可包含已编译的程序集(通常是包含业务逻辑的 DLL 文件)、用于存储预编译代码的已知目录(目录名总是 \Bin)、存储在基于文本的、易读的 Web.config 文件中的配置设置、页、服务器控件,以及 XML Web 服务。

服务器中任何不与其他应用程序共享的预编译代码必须存储在应用程序的 \Bin 目录中。它是应用程序的本地程序集缓存。Web.config 文件在基于 XML 的文本文件中存储应用程序级的配置文件。这意味着可以使用任意标准的文本编辑器或 XML 分析器来创建它们,而且它们是可读的。如果不在应用程序根目录中包含 Web.config 文件,则配置设置由 Machine.config 文件中整个服务器的配置文件来确定。安装 .NET Framework 时,会安装 Machine.config 文件的某个版本。

下图显示了 ASP.NET 应用程序文件系统布局的示例。

本图中的应用程序包括 \Bin 目录中的两个 DLL 文件、一个 Default.aspx 页,一个名为 Menu.ascx 的用户控件、一个名为 MyWebService.asmx 的 XML Web 服务以及一个 Global.asax 文件。另外,该应用程序是使用下列三个配置文件配置的:系统根目录中计算机级别的 Machine.config 文件、C:\Inetpub\Wwwroot 目录中站点级别的 Web.config 文件和应用程序根目录中应用程序级别的 Web.config 文件。当站点的 Web.config 文件覆盖 Machine.config 文件中的设置时,在应用程序根目录中存储的配置设置将覆盖站点的 Web.config 文件和 Machine.config 文件中的设置。

ASP.NET与IIS、ASP 之间的比较

ASP.NET 应用程序与 Internet 信息服务 (IIS) 之间的关系如下:IIS 通过 aspnet_isapi.dll(ASP.NET 的进程模型)对可发布的 ASP.NET 文件的所有请求提供服务。IIS 不会处理服务器端的代码;而 ASP.NET 引擎则会处理服务器端代码,然后将输出返回给 IIS(如果可能,或另一个 Web 服务器)。
ASP.NET 并非仅仅是下一代的ASP,它为创建利用 Internet 的网络应用程序提供了全新的编程模型。ASP.NET与ASP比较的特点如下:

1、改进的性能和可伸缩性

1)编译后执行:ASP.NET 比传统 ASP 的运行速度更快,同时保留了 ASP"只需点击保存"的更新模型。无需显式的编译步骤。ASP.NET 自动检测变化,根据需要动态编译文件,并且保存编译结果以便后续的请求再次使用。动态编译保证了用户的应用程序总是最新的,并且编译后执行的操作会使其运行速度更快。对于多数从传统的 ASP 迁移到 ASP.NET 的应用程序,其处理的页数增长了 3 至 5 倍。
2)大容量输出缓存:ASP.NET 输出缓存极大地改进了应用程序的性能和可伸缩性。当在页面中启用输出缓存时,ASP.NET 就会执行一次该页并将结果在发送至用户之前保存在内存中。当其他用户请求同一页面时,ASP.NET 使用内存中的缓存结果向用户提供服务,而不是重新执行该页面。输出缓存是可配置的,并且可以用来缓存单个区域或整个页面。
3)Web 场会话状态:ASP.NET 会话状态允许我们在 Web 场中的所有计算机之间共享会话数据。现在,用户可以通过多个请求访问 Web 场中不同的服务器,并且仍然具有完全访问会话数据的权限。

2、增强的可靠性

内存泄漏、死锁和故障保护:ASP.NET 自动检测错误(例如,死锁和内存泄漏)并进行恢复以确保我们的应用程序始终可用。例如,当检测到内存泄漏时,ASP.NET 将自动启动新的 ASP.NET 工作进程副本,并将所有的新请求定向到该进程。当旧进程完成挂起请求的处理后,会经过适当的处置并释放泄漏的内存。

3、部署简单

1)"非接触式"应用程序部署:使用 ASP.NET,我们可以通过将其复制到服务器来进行整个应用程序的部署。配置设置将存储在应用程序的 XML 文件中。
2)动态更新运行的应用程序:ASP.NET 允许我们不必重新启动 Web 服务器而更新已编译的组件。与传统的 COM 组件(这些组件需要在部署更新后手动重新启动 Web 服务器)不同,ASP.NET 自动检测更改并使用新的代码启动。
3)迁移路径简单:ASP.NET 可以和传统的 ASP 应用程序一起在 Microsoft Windows 2000、Windows XP、以及 Windows Server 2003 家族成员的 IIS 上运行。我们可以一次迁移一个应用程序,甚至是单独的页面。ASP.NET 甚至允许我们继续使用现有的传统 COM 商务组件。

4、新的应用程序模型

1)XML Web 服务:XML Web 服务允许应用程序通过 Internet 进行通信和共享数据,而不管操作系统和编程语言如何。ASP.NET 使得公开和调用 XML 网络服务变得简单。
2)移动 Web 设备支持:ASP.NET 移动控件允许我们处理超过 80 台使用 ASP.NET 的移动 Web 设备。我们只需一次性写入应用程序,移动控件就能自动生成请求设备的页面。

5、开发人员的效率

1)简单的编程模型:具有服务器控件(这些控件允许我们使用比传统 ASP 更少的代码来构建效果极佳的页面)的 ASP.NET 使得动态构建真实的 Web 应用程序变得更加容易。
2)灵活的语言选项:ASP.NET 不仅支持 Microsoft Visual Basic Scripting Edition (VBScript) 和 Microsoft JScript,而且支持 25 种以上的 .NET 语言,包括对 Visual Basic .NET、Microsoft C# 和 JScript .NET 的内置支持。
3)丰富的类框架:.NET Framework 类库提供了 4500 多种类,这些类封装了大量的功能,诸如 XML、数据访问、文件上载、正则表达式、图像生成、性能监视和日志记录、事务、消息队列和 SMTP 邮件。

http://www.knowsky.com/4195.html

http://www.pconline.com.cn/pce/empolder/net/asp/0509/703426.html

上面说的都很详细

㈡ 用aspnet

在 模型中 vs 已经完全脱离了编译而成为了一个彻底的ide 算是一个不小的改动 其中更是取消了有关Web Application的概念 使得习惯了vs 的人刚开始的时候会有一些摸不着头脑 下面简单说一下我在使用过程中自己总结的 算是一点经验

新建web工程并且位置是文件系统的时候 vs 只是帮你建好了一个sln文件 这个东西只是指引m *** uild 如何进行编译的 过程是 ide 调用 m *** uild m *** uild解析sln文件 m *** uild调用aspnet_piler exe进行网站的编译 所以aspnet_piler exe只是负责进行网站的编译的

预编译的概念在framework 里面就存在了 vs 中的预编译指的是将页面对应的cs/vb文件与resx文件编译后统一集成到一个dll中放到bin目录下 将aspx文件直接拷贝过去 这样做会留下隐患 因为aspx文件就直接暴露在最后的发行包中 如果完全是codeb behind模型还好 只能改改界面 如果采用了页面上的来生成页面 源代码就暴露了 针对这些问题 vs 采用了一种新的模式

请参看ASP NET 编译工具 (Aspnet_piler exe) 这篇文章了解对各种文件的处理方式

IDE发布

vs 中选择 生成 〉发布网站 在对话框中的操作将映射到aspnet_piler exe的参数中 可更新的发布对应 u 其他选项类似 请参考上面的文章了解

注意 发布时将忽略nfig中的debug?问骋簧晌薜魇孕畔⒌奈募?

手工编译

简单说来 如果是无更新发布模式编译 appcode下面的class编译成dll放在bin下 页面内容清空位置不变作占位用 同时页面被编译成一个随机名称的dll 增加一个同piled文件到bin目录下 内容大概如下

<?xml version= encoding= utf ?>

<preserve resultType= virtualPath= /Forum/AdminList aspx hash= c filehash= f d c flags= assembly= App_Web_hmrycg w type= ASP forum_adminlist_aspx >

<filedeps>

<filedep name= /Controls/footer ascx />

<filedep name= /Controls/header ascx />

<filedep name= /Forum/AdminList aspx />

<filedep name= /Forum/AdminList aspx cs />

<filedep name= /Forum/menu ascx />

<filedep name= /Forum/menu ascx cs />

</filedeps>

</preserve>

里面只是列出了页面上的customcontrol 这里已经完成了和masterfile的映射 这样最大限度的保护了页面的敏感信息 发布过的网站中只能看见一堆文件名了 可更新的发布模式与vs 类似 页面就直接拷贝过来不予编译了

讲了一堆原理 下面说一下aspnet_piler exe的调用方法 这是我使用的例子

我的开发目录是这样的

Project/

library/

devroot/

pubroot/

proj sln

使用的命令如下

aspnet_piler v / p devroot f pubroot

分析

v / 指明了iis的虚拟目录

p devroot 表示代码实际位置

pubroot 指明了要发布的位置

f 表示强制改写目标位置

lishixin/Article/program/net/201311/13677

㈢ 关于VS2003编译出现的几种常见难点

选择最佳的VS2003编译选项要由具体的情况和需要决定,但VS2003编译模型要有灵活性。即使选择使用 \app_code 目录来存储代码隐藏文件,您仍可以使用完整的编译方法来部署应用程序。ASP.NET 1.x中的编译ASP.NET1.x 中的主要编译模型会导致一个应用程序程序集(包含所有的已编译代码隐藏文件和其他的源代码)和一个为每个被请求的 ASPX 页而创建的临时程序集。在有些情况下,编译器优化(例如批处理)会引起将临时 ASPX 页编译到同一个程序集中。在任一种情况下,每个 ASPX 页都编译到一个临时程序集中,这样它可以加载到 ASP.NET 运行库。虽然这种模型有优点,但它也有两个主要缺点。首先,ASPX 页必须要以人们可以阅读的形式部署到 Web 站点。如果开发人员使用代码内联 模型,这意味着,一些(或所有)的业务逻辑也可以部署在生产服务器上。虽然没有将 IIS 和 ASP.NET 配置为公开原始的 ASPX 页,但聪明的攻击者仍可以通过任何攻击(该攻击打开到 Web 服务器的通道)来访问这些文件。其次,第一次有人请求某 Web 页时,响应速度将比正常速度慢一些,原因在于 ASP.NET 运行库必须编译 ASPX 页。这整个过程中,开发人员拥有的唯一控制权是决定是否批编译 ASPX 页。在 ASP.NET 1.x 中,可以通过修改 标记在 web.config 文件中配置批编译。ASP.NET 2.0 中的编译ASP.NET 2.0 为 Web 应用程序提供三种不同的VS2003编译模型:普通(ASP.NET 1.x) — 在一个普通的 ASP.NET Web 应用程序中,代码隐藏文件被编译到一个程序集并存储在 /bin 目录中。根据要求编译 Web 页 (ASPX)。该模型对大多数 Web 站点都运行得不错。但是,编译过程使得第一次请求 ASP.NET 页时的速度比随后的请求速度缓慢。ASP.NET 2.0 继续支持这种编译模型。部署预编译 — ASP.NET 2.0 的一种新功能,允许在部署前对项目进行完整编译。在完整编译中,所有的代码隐藏文件、ASPX 页面、HTML、图形资源以及其他的后端代码都被编译到一个或多个可执行程序集中,这取决于应用程序的大小和编译设置。这些程序集包含所有的已编译 Web 站点代码,而资源文件和配置文件被复制,没有做修改。这种编译方法以牺牲修改部署后 Web 站点的能力为代价,提供了最好的性能和安全性。如果您使用高可见或高安全的 Web 站点,这种选项是最终部署的最好选择。但是,如果您正在构建一个运行局部 Intranet 的小站点,并且更改站点非常频繁,那么完整预编译可能有点过分。 ASP.NET 2.0 编译模型也允许预编译应用程序的所有代码隐藏文件并且仍可以更新代码。可以将代码隐藏文件和原始的 .ASPX 文件(都是局部类)编译到一个预编译类中(页面的基类)。如果选择在运行时编辑 .ASPX 文件,只需重新编译页面即可。完整的运行时编译 — 在部署预编译的另一个极端,ASP.NET 2.0 提供一种在运行时编译整个应用程序的新机制。也就是说,可以将未编译的代码隐藏文件和其他相关的代码放在 \app_code 目录中,并让 ASP.NET 2.0 创建并维护对程序集的引用,这些引用将在运行时根据这些文件生成。这种选项以在服务器上存储未编译代码为代价,在更改 Web 站点内容方面提供了最大的灵活性。 选择最佳的编译选项要由具体的情况和需要决定,但编译模型要有灵活性。即使选择使用 \app_code 目录来存储代码隐藏文件,您仍可以使用完整的编译方法来部署应用程序。VS2003编译批编译在ASP.NET 2.0 中,可以利用单个 URL 请求来批编译任何应用程序。如同 ASP.NET 1.x 一样,批编译消除了第一次页面请求的延时,但造成了更长的启动周期。另外,批编译还要求在部署前编译代码隐藏文件。Web.config 批编译设置在 ASP.NET 2.0 中仍起作用。批编译的优点是,第一个用户可以立即使用页面,而且在批编译期间可以检测到 ASPX 页中的任何错误。但是,批编译的确增加了应用程序启动的延时,并且必须要内置在 Web.config 文件中。应当注意,如果某个文件出现了问题,则该批将不会接收它。部署预VS2003编译部署预编译允许创建一个或多个程序集,这些程序集是 Web 站点的可执行版本。所获得的程序集包含 Web 站点的已编译代码。HTML 页面、资源、配置文件和 ASPX 页面被单独复制。部署预编译要求使用一个称为 ASPnet_compiler.exe 的命令行实用程序。该实用程序创建一个目标部署目录,该目录包含一个含有程序集的 /bin 目录和各种 ASPX 页的 stub 文件。该实用程序还用来在原地进行预编译,类似于调用"魔术页"的行为。stub 文件共享 ASPX 页的名称,但是包含调用已编译程序集的简单代码。换句话说,ASPX 页只是空壳而不是填满的功能页。通过为部署预编译 Web 站点,您可以获得增强的安全性,因为只有进行反编译程序集才能访问您的代码。为了增强保护,可以弄乱所得到的程序集,使您的 Web 应用程序更加安全。部署预编译的主要缺点是,在部署前必须执行这些步骤,并且在部署后不能更改 Web 站点。如果想进行更改,就必须重新编译该 Web 站点并重新部署它。对于大多数主要的 Web 应用程序,部署预编译选项将是部署的首选机制源码天空,因为它减少了在 Web 服务器上部署的原始代码数量,并提供了最佳的安全性。这个增加的进程可以内置于通常的开发/测试/部署周期中,而工作效率并不会有多大损失。

㈣ 谁能介绍下asp.net(我是初学者)

ASP .NET是.NET Framework的一部分。NET Framework是一个用来建立、运行Web应用程序的通用环境。.NET Framework包含一个CLR和通用类库,支持ADO .NET,ASP .NET和Windows表单.支持 C++, C#,VB和JScript(Microsoft版JavaScript)。Vs.NET是一个用于.NET Framework的开发环境。
ASP .NET可以使用ADO .NET。支持VB(不是VBScript),支持 C# C++。Jscript。涉及到安全方面有用户身份验证,账户和角色赋予等
身份验证:1,表单身份验证 在用户提供凭据并提交该表单后,以 Cookie 的形式发出身份验证票证。此 Cookie 包含凭据或用于重新获取标识的密钥。浏览器的后续请求自动包含此 Cookie。
2,Windows 身份验证
IIS 执行身份验证,并将经过身份验证的标记传递给 ASP.NET 工作进程。在将请求传递给 ASP.NET 之前,您可能需要使用 Windows 身份验证来模拟 IIS 进行验证的 Windows 用户帐户。
3,Passport 身份验证
Microsoft 提供的集中式身份验证服务,它为成员站点提供单一登录和核心配置文件服务。
4,默认身份验证
匿名访问
相关配置在web.config中
<authentication> 部分
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfauthenticationsection.asp
• <authorization> 部分
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfauthorizationsection.asp
• <identity> 部分
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfidentitysection.asp
• <machineKey> 部分
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/gngrfmachinekeysection.asp
涉及2个类是FileAuthorizationMole和UrlAuthorizationMole,前者针对文件,通过windows ACL检查某用户知否有访问权限,在MODE= Windows 身份验证时处于活动状态。后者针对URI命名空间来允许或拒绝用户/角色的GET/POST等的访问
代码举例:
if ( User.IsInRole("BUILTIN\\Administrators"))
Response.Write("You are an Admin");
else if (User.IsInRole("BUILTIN\\Users"))
Response.Write("You are a User");
else
Response.Write("Invalid user");
以上用于检查用户角色,用户的标识是Windows 标识 (User.Identity.Name = "Domain\username")。这表明应该是启用了 Windows身份验证和模拟。
如果使用的是表单身份验证,则不会为经过验证的用户分配角色,使用 OnAuthenticate事件创建新的 GenericPrincipal对象,并更新HttpContext 的 User 属性。
Visual C# .NET 代码
public void Application_AuthenticateRequest(Object s, EventArgs e)
{
if (HttpContext.Current.User != null)
{
if (HttpContext.Current.User.Identity.AuthenticationType == "Forms" )
{
System.Web.Security.FormsIdentity id = HttpContext.Current.User.Identity;
String[] myRoles = new String[3];
myRoles[0]= "managers";
myRoles[1]= "testers";
myRoles[2]= "developers";
HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id,myRoles);
}
}
}
以上代码发生于OnAuthenticate事件,下面检查用户是否属于特定的角色并相应地限制其访问权限,在 .aspx 页中代码
if (User.IsInRole("managers"))
Response.Write("You are a Manager");
else if (User.IsInRole("testers"))
Response.Write("You are a Tester");
else if (User.IsInRole("developers"))
Response.Write("You are a Developer");
asp.net的组成
从程序员的角度讲,asp.net由如下的文件和文件夹组成:
.dll,用于控件、组件或者需要引用的任何代码的可部署程序集(assembly)。放于bin目录下
.browser,ASP.NET用它来识别各浏览器。于App_Browser文件夹
.cs、.vb、.xsd,自定义的文件类型(通过创建继承于BuildProvider的子类完成),包含作为应用程序的一部分编译的类的源文件。当页面被请求时,ASP.NET编译该文件夹中的代码。该文件夹中的代码在应用程序中自动地被引用。在使用ASPNET_Compiler.exe预编译网站后(非动态编译),这些隐藏代码可以脱离部署
.mdb、.mdf、.xml,Access和SQL Express文件及XML或其他数据库文件。
.resx,以编程方式使用的资源文件。
.skin、.CSS、.xsl,附属文件,包含一组定义ASP.NET页面和控件外观的文件。
.wsdl,包含用以生成代理类的WSDL文件,以及与在应用程序中使用Web服务有关的其他文件。
app_code文件夹:自动编译/动态编译后生成的程序集,每种语言生成一个子文件夹,详细信息:http://msdn.microsoft.com/zh-cn/library/t990ks23(VS.80).aspx
自动编译的web.config配置:http://msdn.microsoft.com/zh-cn/library/system.web.configuration.systemwebsectiongroup.compilation(VS.80).aspx
App_GlobalResources和App_LocalResources文件夹:资源文件夹

㈤ VS2005 debug编译和msbuild编译 有什么区别

用aspnet_compiler发布网站在asp.net 2.0模型中,vs2005已经完全脱离了编译而成为了一个彻底的ide.算是一个不小的改动。其中更是取消了有关Web Application的概念,使得习惯了vs2003的人刚开始的时候会有一些摸不着头脑。下面简单说一下我在使用过程中自己总结的,算是一点经验。

新建web工程并且位置是文件系统的时候,vs2005只是帮你建好了一个sln文件,这个东西只是指引msbuild 如何进行编译的,过程是:ide 调用 msbuild ,msbuild解析sln文件,msbuild调用aspnet_compiler.exe进行网站的编译。所以aspnet_compiler.exe只是负责进行网站的编译的。

预编译的概念在 .netframework 1.1 里面就存在了,vs2003中的预编译指的是将页面对应的cs/vb文件与resx文件编译后统一集成到一个dll中放到bin目录下,将aspx文件直接拷贝过去。这样做会留下隐患,因为aspx文件就直接暴露在最后的发行包中,如果完全是codeb-behind模型还好,只能改改界面,如果采用了页面上的来生成页面,源代码就暴露了。针对这些问题,vs2005采用了一种新的模式。
请参看ASP.NET 编译工具 (Aspnet_compiler.exe) 这篇文章了解对各种文件的处理方式。

IDE发布:
vs2005中选择 生成-〉发布网站,在对话框中的操作将映射到aspnet_compiler.exe的参数中,可更新的发布对应 -u,其他选项类似,请参考上面的文章了解。
注意:发布时将忽略web.config中的debug参数,统一生成无调试信息的文件。

手工编译:
简单说来,如果是无更新发布模式编译,appcode下面的class编译成dll放在bin下,页面内容清空位置不变作占位用,同时页面被编译成一个随机名称的dll,增加一个同名.compiled文件到bin目录下,内容大概如下:

<?xml version="1.0" encoding="utf-8"?>
<preserve resultType="3" virtualPath="/Forum/AdminList.aspx" hash="6772609c3" filehash="49154463f1d6738c" flags="110000" assembly="App_Web_hmrycg3w" type="ASP.forum_adminlist_aspx">
<filedeps>
<filedep name="/Controls/footer.ascx" />
<filedep name="/Controls/header.ascx" />
<filedep name="/Forum/AdminList.aspx" />
<filedep name="/Forum/AdminList.aspx.cs" />
<filedep name="/Forum/menu.ascx" />
<filedep name="/Forum/menu.ascx.cs" />
</filedeps>
</preserve>
里面只是列出了页面上的customcontrol,这里已经完成了和masterfile的映射。这样最大限度的保护了页面的敏感信息,发布过的网站中只能看见一堆文件名了。可更新的发布模式与vs2003类似,页面就直接拷贝过来不予编译了。

讲了一堆原理,下面说一下aspnet_compiler.exe的调用方法,这是我使用的例子

我的开发目录是这样的

Project/
library/
devroot/
pubroot/
proj.sln
使用的命令如下:

aspnet_compiler -v / -p .\devroot -f .\pubroot
分析:

-v / 指明了iis的虚拟目录
-p .\devroot 表示代码实际位置
.\pubroot 指明了要发布的位置
-f 表示强制改写目标位置
你还可以用-u来进行传统意义上的预编译,-d来插入编译符号。

总的来说,aspnet_compile结合msbuild,提供了一个很好的自动化编译环境,值得研究研究:)

㈥ 如何:预编译 ASP.NET 网站项目以进行部署

预编译以进行部署的网站项目使您能够将站点部署到成品服务器,并且不必部署源代码。
可以选择预编译代码和页以及用户控件(.aspx、.ascx 或 .master 文件),或者仅预编译代码。
如果只预编译代码,则可以更新站点的用户界面,而无需重新编译整个站点。
本主题中的过程使用 ASP.NET 编译工具 (Aspnet_compiler.exe) 的开关和参数。
有关此工具的更多信息,请参见
ASP.NET 编译工具 (Aspnet_compiler.exe)。
有关预编译的更多信息,请参见
ASP.NET 预编译概述。

㈦ 如何发布.net网站

第一种方法:

使用XCOPY部署
使用命令如下:
x e:\Web的安装部署 c:\temp /e /k /r /o /h /I

执行后,会将当前的应用"Web的安装部署"的所有文件拷贝到c盘的TEMP目录中去,之后,在IIS中创建虚拟目录,指向该目录就可以了。

第二种方法:

在ASP.NET 2.0中,提供一种更新的编译部署方式,叫Precompilation deployment(部署预编译)。Net Framework 2.0提供了一个命令行的工具(aspnet_compiler.exe),可以将WebApp中所有的代码、页面(包括HTML)、静态文件全部编译进dll,然后进行部署,得到的目标系统中,只包含编译后的dll,甚至连HTML页面文件都是不存在的,大大增强了系统的安全性,但是浏览起来和普通的ASP.NET 应用没有任何区别。使用方法如下:

aspnet_compiler.exe 一般在WINNT目录下的.net framework 2.0子目录下可以找到,使用格式为:

aspnet_compiler -v /<websitename> -p <source> <destination>

其中,websitename为你要部署的web应用程序的虚拟目录名,<source>为你要部署的web应用程序的物理路径,〈destination>为即将部署的应用程序的目标物理路径

比如:

在VS命令中输入 aspnet_compiler -v /Web的安装部署 -p e:\Web的安装部署 c:\compiled

则所有的文件都会被部署预编译到c盘的compiled目录下,而且该目录下,你会发现没有任何的代码文件和HTML文件了。

㈧ 如何使aspnet

在用户表上新建一个字段limits ,例如:游客为0,用户为1,管理员为3,在点击修改或添加使,取出这个字段进行判断。当为0时,弹出对话框“对不起,您无此权限”;当为1时,弹出对话框“对不起,您无此权限”;当为3时,就直接操作就行。

㈨ 没有VS软件,编写的ASP.net web应用程序能使用吗

vs只是一个便于编写.net程序的工具而已,同时它也集成了iis中的功能。而asp.net运行的条件与是否安装vs没有关系,关键要有.net framework,即.net框架,另外看你的.net程序版本,只要运行你的程序的.net版本大于等于你自己机器上使用的版本即可以正常运行。

㈩ 网上下载的asp.net网站,vs调试时总出现下面的问题

IIS没配置好啊

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:705
制作脚本网站 发布:2025-10-20 08:17:34 浏览:969
python中的init方法 发布:2025-10-20 08:17:33 浏览:677
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:828
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:737
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1076
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:308
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:188
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:875
python股票数据获取 发布:2025-10-20 07:39:44 浏览:829