在ASP.NET中实现Url Rewriting5

3. 用网址重写引擎实现简单的网址重写
  
    为了更好地示范网址重写引擎的运行,我们来建立一个ASP.NET Web应用程序来实现简单的网址重写引擎。假定我们为一家在线销售各类商品的公司服务,这些产品划分为以下类别:
  
    分类编号(CategoryID) 分类名称(CategoryName)
     1          饮料(Beverages)
     2          调味品(Condiments)
     3          工艺品(Confections)
     4          日记本(Diary Products)
     ... ...
    
    假定已经建立好一个名为ListProductsByCategoryID.aspx的ASP.NET页面文件,它通过查询参数获取一个分类编号,并根据此编号获取所有该分类下的所有商品。如果用户想浏览所销售的饮料类商品可以通过ListProductsByCategoryID.aspx?CategoryID=1来访问,如果用户想浏览所销售的日记本类商品可以通过ListProductsByCategoryID.aspx?CategoryID=4来访问。假定还有一个页面ListCategories.aspx,它列出所有代售商品的分类编号。
  
    显然这里发现了一个网址重写的案例。对于用户来说他们所输入的地址不具有任何实际意义并且不具备任何“隐蔽性”,倒不如使用网址重写引擎让用户去访问/Products/Baverage.aspx地址,系统将该地址重写到ListProductsByCategoryID.aspx?CategoryID=1。我们可以在web.config文件中来完成网址重写任务:
  
  <RewriterConfig>
   <Rules>
   <! —- Rules for products lister -->
   <RewriterRule>
   <LookFor>~/Products/Baverage.aspx</LookFor>
   <SendTo>~/ListProductsByCategoryID.aspx?CategoryID=1</SendTo>
   </RewriterRule>
   </Rules>
  </RewriterConfig>
  
    很明显地看到,搜索用户访问的路径是否匹配/Products/Baverage.aspx,如果匹配的话,则将网址重写到/ListProductsByCategoryID.aspx?CategoryID=1。
  
    注意:你会发现<LookFor>节点中避免直接在“Baverage.aspx”中使用句点“.”是因为<LookFor>节点的值是正则表达式的匹配模式,在正则表达式中句点符号是一个特殊字符,它表示匹配任何一个字符,也就是说如果访问BaverageQaspx时也会发生匹配,为了避免发生这个句点引起的匹配我们得在该句点符号前面加上一个“/”,表示引用句点符号。
  
    通过该规则定义,当用户访问/Products/Baverage.aspx文件的时候,他们将看到代售的饮料类商品列表信息。图3为访问/Products/Baverage.aspx地址时的浏览器截图,注意在浏览器中地址栏上显示的是用户输入的/Products/Baverage.aspx地址,但是实际访问的地址却是网址重写后的/ListProductsByCategoryID.aspx?CategoryID=1。(事实上,在服务器上根本就不存在/Products/Baverage.aspx文件!)
  
  图三.网址重写后的对商品分类的请求
  
    和/Products/Baverage.aspx类似,下一步我们添加其它分类的重写规则,只需简单地在web.config文件中<Rules>中在添加其他<RewriteRule>节即可。该演示完整的重写规则集合请参考下载文档的web.config文件中的定义。
  
    为了让该网址更具有“隐蔽性”,如果让用户把/Products/Baverage.aspx后面Baverage.aspx一段截去,在浏览器中输入/Products/来浏览产品分类列表会更好一些。乍一看,这项任务微不足道,只需添加一条网址重写规则将/Products/映射到/ListCategories.aspx即可。然而这里有一个微妙之处,你必须先创建一个/Products/目录,并在里面放一个空文件Default.aspx。
  
    要认识为什么这些额外的步骤是必须的,先回顾一下前文。网址重写引擎是处于ASP.NET一级的,也就是说,如果ASP.NET没有获得处理请求的机会的话,网址重写引擎就不能对输入的网址请求作出判断。此外,IIS仅在请求文件包含相应扩展名时才将请求转交给ASP.NET引擎。如果用户访问/Products/,IIS并不知道其扩展名是什么,于是它检查该目录下的文件看是否包含有默认首页文件名(Default.aspx,Default.htm,Default.asp,等等,这些文件名在IIS管理工具对话框中Web服务器属性对话框中的文档标签中定义。)当然,如果/Products/目录不存在的话,IIS将返回一个HTTP 404错误。
  
    所以我们需要创建一个/Products/目录并在该目录下额外创建一个空文件Default.aspx,IIS会检查该目录下的文件,发现有一个默认文件名Default.aspx,于是将请求转交给ASP.NET,这样,网址重写引擎才能生效。
  
  <RewriterRule>
   <LookFor>~/Products/Default.aspx</LookFor>
   <SendTo>~ListCategories.aspx</SendTo>
  </RewriterRule>
  
    通过该规则,用户访问/Products/Default.aspx或者访问/Products/都可以看到如图四所示的产品分类列表。
  

查看原文 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
重新编写深度生成模型是指对已有的深度生成模型进行重新设计和改进,以提高其性能和效率。深度生成模型是一种基于人工神经网络的模型,用于从输入数据生成符合特定分布的新数据。这种模型在图像生成、语音生成和自然语言处理等领域有着广泛的应用。重新编写深度生成模型可能涉及到以下几个方面的工作: 首先,对原有模型的架构进行调整和优化。可能需要更换不同类型的神经网络层、调整网络的深度和宽度,以及引入新的激活函数和正则化方法,以改善模型对复杂数据分布的建模能力。 其次,对损失函数和优化算法进行修改。这包括选择更适合特定任务的损失函数,以及调整学习率、批次大小和训练迭代次数等超参数,以加速训练过程并提高模型收敛性能。 另外,考虑引入新的技术和概念。例如,可以借鉴最新的深度学习技术,如自监督学习、迁移学习和元学习,以提高模型的泛化能力和适应性。 最后,需要对重新编写的模型进行充分的测试和评估。这包括在各种真实数据集上进行性能测试,进行与其他模型的比较,以及对模型的可解释性和鲁棒性进行分析。 总的来说,重新编写深度生成模型是一个既需要理论深度又需要实践经验的工作,需要对模型架构、损失函数、优化算法等方面进行全面的考量和改进,以获得更加高效和强大的生成模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值