通过本文主要向大家介绍了iis注册asp.net2.0,下载asp.net 2.0,asp net2.0,安装asp.net 2.0,注册asp.net2.0等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
在项目中经常要进行如下映射
将
http://onewww.net/a.aspx?name=llinzzi
映射到
http://onewww.net/llinzzi
首先要解决2个问题
第一是支持通配符的映射 URL映射是asp.net2.0新增的功能,不支持通配符
于是采用了NBEAR的 NBear.Web.Modules.UrlRewriteRules 进行通配符映射
<?xml version="1.0"?>
<!--
注意: 除了手动编辑此文件以外,您还可以使用
Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
“网站”->“Asp.Net 配置”选项。
设置和注释的完整列表在
machine.config.comments 中,该文件通常位于
\Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<configSections>
<section name="UrlRewriteRules" type="NBear.Web.Modules.UrlRewriteRules, NBear.Web"/>
</configSections>
<UrlRewriteRules>
<Rule key="/(.*)/" value="/a.aspx?name=$1" />
<Rule key="/(.*)" value="/a.aspx?name=$1" />
</UrlRewriteRules>
<appSettings/>
<system.web>
<sessionState timeout="200" />
<httpModules>
<add type="NBear.Web.Modules.UrlRewriteModule, NBear.Web" name="UrlRewriteModule"/>
</httpModules>
<!--
设置 compilation debug="true" 将调试符号插入
已编译的页面中。但由于这会
影响性能,因此只在开发过程中将此值
设置为 true。
-->
<compilation debug="true" defaultLanguage="c#" />
<!--
通过 <authentication> 节可以配置 ASP.NET 使用的
安全身份验证模式,
以标识传入的用户。
-->
<authentication mode="Windows"/>
<!--
如果在执行请求的过程中出现未处理的错误,
则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
开发人员通过该节可以配置
要显示的 html 错误页
以代替错误堆栈跟踪。
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
</system.web>
</configuration>
vs2005里进行测试成功,但放到IIS里失败
检查了几次,没发现问题,仔细想了想
先了下,iis的工作流程应该是遇到.aspx扩展名,交给.net处理,然后才能调用httpModules进行url映射
http://onewww.net/llinzzi
没有aspx扩展名,所以iis直接当成文件架,返回404错误了
而vs2005里的调试web服务器把所有的请求都发给了.net处理,所以成功.
于是更改映为
<Rule key="/(.*)/index.aspx" value="/a.aspx?name=$1" />
浏览
http://onewww.net/llinzzi/index.aspx
测试成功.
开心,把index.aspx设置成默认文档
测试http://onewww.net/llinzzi/ 结果还是404错误
想了下iis认为llinzzi文件夹不存在,自然就没用默认文档去访问
郁闷,想了很多方法,均失败
难道要用 llinzzi/index.html访问?难道要生成真是存在的文件夹?
都不是理想的方案
在尝试从iis里的主目录里的配置里修改isapi来实现用文件夹对iis的解析的时候,突然发现windows2003服务器上的iis6对比我工作机xp上的iis5多了一个名为
通配符应用程序映射 的设置,眼睛一亮..有戏,第一名字听起来有门,第二2003本来就是为.net打造的.于是点插入,
输入 c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
测试,成功!
搜索了下关于 通配符应用程序映射 的资料
安装通配符应用程序映射
在 IIS 6.0 中,管理员可以在每次开始对网站或虚拟目录发送请求时,将该网站或虚拟目录配置为运行 Internet 服务器 API (ISAPI),而不管所请求文件的扩展名。
当 IIS Web 服务器接受到来自客户端的请求时,Web 服务器会查看在请求中命名的文件扩展名,以确定有哪一个 ISAPI 或公共网关接口 (CGI) 应用程序来处理该文件。例如,如果请求名为 Default.asp 的网页时,IIS 可以从应用程序映射列表中知道 Default.asp 由 Asp.dll ISAPI 应用程序处理。
如果想在所请求的页面发送到映射的应用程序前对每次客户端请求执行特定的任务,可以编写一个 ISAPI 筛选器在请求到达时将其截获。但是,ISAPI 筛选器具有以下限制:
它们不能访问请求主体,而只访问头。
它们只能在每个站点配置,而不能在每个虚拟目录配置。
它们不应包含长期运行的操作,因为 ISAPI 筛选器是同步进行的。
它们的灵活性较小,因为 ISAPI 筛选器 API 的功能比 ISAPI 扩展 API 少,后者用于编写 ISAPI 应用程序。
它们在时间上难以管理。
它们是事件驱动的。
通过使用通配符应用程序映射,您可以在所请求的页面发送到其映射应用程序之前截获每个请求。其效果就像拥有处理每个文件名扩展的应用程序映射。这就是使用“通配符”来命名这一功能的原因。使用通配符应用程序映射的应用程序只能是 ISAPI 应用程序。
客户端请求采用以下路由:
传入的请求由安装在根网站上的任何现有的 ISAPI 筛选器处理。ISAPI 筛选器依次执行。
请求被发送到任何现有的通配符应用程序映射的应用程序,这些程序也是依次执行的。如果传入的请求是对虚拟目录中的 Web 文件进行请求的,且通配符应用程序映射已安装在了该虚拟目录和根网站上,那么只有安装在该虚拟目录的通配符应用程序映射才被执行。如果该虚拟目录上没有安装通配符应用程序映射,则将执行安装在网站上的通配符应用程序映射。换句话说,通配符应用程序映射只在所请求的 Web 文件所处的应用程序中不存在映射时才会被继承。
IIS 服务器会查看应用程序映射表,以确定由哪个 ISAPI 应用程序或 CGI 脚本专门处理所请求的文件。
每个阶段都可以附加响应,然后传回给客户端。
使用通配符应用程序映射
通配符应用程序映射可以在以下方案中使用:
高安全性 Web 应用程序(如银行业应用程序)要求对每个提出请求的用户根据用户名、密码和帐户号数据库进行身份验证。例如,一旦用户通过了身份
将
http://onewww.net/a.aspx?name=llinzzi
映射到
http://onewww.net/llinzzi
首先要解决2个问题
第一是支持通配符的映射 URL映射是asp.net2.0新增的功能,不支持通配符
于是采用了NBEAR的 NBear.Web.Modules.UrlRewriteRules 进行通配符映射
<?xml version="1.0"?>
<!--
注意: 除了手动编辑此文件以外,您还可以使用
Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
“网站”->“Asp.Net 配置”选项。
设置和注释的完整列表在
machine.config.comments 中,该文件通常位于
\Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<configSections>
<section name="UrlRewriteRules" type="NBear.Web.Modules.UrlRewriteRules, NBear.Web"/>
</configSections>
<UrlRewriteRules>
<Rule key="/(.*)/" value="/a.aspx?name=$1" />
<Rule key="/(.*)" value="/a.aspx?name=$1" />
</UrlRewriteRules>
<appSettings/>
<system.web>
<sessionState timeout="200" />
<httpModules>
<add type="NBear.Web.Modules.UrlRewriteModule, NBear.Web" name="UrlRewriteModule"/>
</httpModules>
<!--
设置 compilation debug="true" 将调试符号插入
已编译的页面中。但由于这会
影响性能,因此只在开发过程中将此值
设置为 true。
-->
<compilation debug="true" defaultLanguage="c#" />
<!--
通过 <authentication> 节可以配置 ASP.NET 使用的
安全身份验证模式,
以标识传入的用户。
-->
<authentication mode="Windows"/>
<!--
如果在执行请求的过程中出现未处理的错误,
则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
开发人员通过该节可以配置
要显示的 html 错误页
以代替错误堆栈跟踪。
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
-->
</system.web>
</configuration>
vs2005里进行测试成功,但放到IIS里失败
检查了几次,没发现问题,仔细想了想
先了下,iis的工作流程应该是遇到.aspx扩展名,交给.net处理,然后才能调用httpModules进行url映射
http://onewww.net/llinzzi
没有aspx扩展名,所以iis直接当成文件架,返回404错误了
而vs2005里的调试web服务器把所有的请求都发给了.net处理,所以成功.
于是更改映为
<Rule key="/(.*)/index.aspx" value="/a.aspx?name=$1" />
浏览
http://onewww.net/llinzzi/index.aspx
测试成功.
开心,把index.aspx设置成默认文档
测试http://onewww.net/llinzzi/ 结果还是404错误
想了下iis认为llinzzi文件夹不存在,自然就没用默认文档去访问
郁闷,想了很多方法,均失败
难道要用 llinzzi/index.html访问?难道要生成真是存在的文件夹?
都不是理想的方案
在尝试从iis里的主目录里的配置里修改isapi来实现用文件夹对iis的解析的时候,突然发现windows2003服务器上的iis6对比我工作机xp上的iis5多了一个名为
通配符应用程序映射 的设置,眼睛一亮..有戏,第一名字听起来有门,第二2003本来就是为.net打造的.于是点插入,
输入 c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
测试,成功!
搜索了下关于 通配符应用程序映射 的资料
安装通配符应用程序映射
在 IIS 6.0 中,管理员可以在每次开始对网站或虚拟目录发送请求时,将该网站或虚拟目录配置为运行 Internet 服务器 API (ISAPI),而不管所请求文件的扩展名。
当 IIS Web 服务器接受到来自客户端的请求时,Web 服务器会查看在请求中命名的文件扩展名,以确定有哪一个 ISAPI 或公共网关接口 (CGI) 应用程序来处理该文件。例如,如果请求名为 Default.asp 的网页时,IIS 可以从应用程序映射列表中知道 Default.asp 由 Asp.dll ISAPI 应用程序处理。
如果想在所请求的页面发送到映射的应用程序前对每次客户端请求执行特定的任务,可以编写一个 ISAPI 筛选器在请求到达时将其截获。但是,ISAPI 筛选器具有以下限制:
它们不能访问请求主体,而只访问头。
它们只能在每个站点配置,而不能在每个虚拟目录配置。
它们不应包含长期运行的操作,因为 ISAPI 筛选器是同步进行的。
它们的灵活性较小,因为 ISAPI 筛选器 API 的功能比 ISAPI 扩展 API 少,后者用于编写 ISAPI 应用程序。
它们在时间上难以管理。
它们是事件驱动的。
通过使用通配符应用程序映射,您可以在所请求的页面发送到其映射应用程序之前截获每个请求。其效果就像拥有处理每个文件名扩展的应用程序映射。这就是使用“通配符”来命名这一功能的原因。使用通配符应用程序映射的应用程序只能是 ISAPI 应用程序。
客户端请求采用以下路由:
传入的请求由安装在根网站上的任何现有的 ISAPI 筛选器处理。ISAPI 筛选器依次执行。
请求被发送到任何现有的通配符应用程序映射的应用程序,这些程序也是依次执行的。如果传入的请求是对虚拟目录中的 Web 文件进行请求的,且通配符应用程序映射已安装在了该虚拟目录和根网站上,那么只有安装在该虚拟目录的通配符应用程序映射才被执行。如果该虚拟目录上没有安装通配符应用程序映射,则将执行安装在网站上的通配符应用程序映射。换句话说,通配符应用程序映射只在所请求的 Web 文件所处的应用程序中不存在映射时才会被继承。
IIS 服务器会查看应用程序映射表,以确定由哪个 ISAPI 应用程序或 CGI 脚本专门处理所请求的文件。
每个阶段都可以附加响应,然后传回给客户端。
使用通配符应用程序映射
通配符应用程序映射可以在以下方案中使用:
高安全性 Web 应用程序(如银行业应用程序)要求对每个提出请求的用户根据用户名、密码和帐户号数据库进行身份验证。例如,一旦用户通过了身份