0

一段时间以来,我一直在寻找这个问题的答案。我正在开发一个 VB.NET 项目,我有几个 .aspx 文件我想映射到不同的 url 路径。web.config 文件中的映射是否有类似于 java 中将 .jsp 与 web.xml 映射的标语:

    <servlet>
        <servlet-name>myjsp</servlet-name>
        <jsp-file>/hello.jsp</jsp-file>
    </servlet>
 
    <servlet-mapping>
        <servlet-name>sample</servlet-name>
        <url-pattern>/Hello</url-pattern>
    </servlet-mapping>

编辑:我相信我可以通过 UrlRewriter 实现我想要做的事情,但我无法让这个配置工作,因为我不知道我必须做哪些参考(Intelligencia.UrlRewriter 不作为参考程序集存在?)

  <configSections>
    <section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
  </configSections>
  
  <system.web>
    <httpModules>
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
    </httpModules>
  </system.web>

  <rewriter>
    <rewrite url="WebForm1.aspx" to="WebForm1/" />
    <rewrite url="~/products/CDs.aspx" to="~/products.aspx?category=CDs" />
    <rewrite url="~/products/DVDs.aspx" to="~/products.aspx?category=DVDs"/>
  </rewriter>  

我的理解也是,如果您使用的是 IIS7,则必须将 httpModule 部分替换为

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
    </modules>
  </system.webServer>
4

1 回答 1

0

将 ~/WebForm1.aspx 映射到 ~/Web

<configuration>
  <configSections>
    <section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
  </configSections>
  <system.web>
    <httpModules>
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
    </httpModules>
    <compilation debug="true"/>
    <urlMappings enabled="true">
      <add url="~/Web" mappedUrl="~/WebForm1.aspx" />
    </urlMappings>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule"/>
    </modules>
    <!-- THE FOLLOWING LINE MUST BE PRESENT FOR AJAX & VALIDATION TO WORK WITH URLREWRITER.NET -->
    <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <!--</handlers>-->
  </system.webServer>
  <!-- URL REWRITER -->
  <rewriter>
    <!--<rewrite url="~/WebForm1.aspx" to="~/WebForm2.aspx"/>-->
  </rewriter>
</configuration>

在指定的重写节点将重定向的配置标签内,名称由 URL 映射修改

这需要引用 Intelligencia.UrlRewriter 来转发 url(但不是重命名),我在 github 上找到了它。

于 2013-07-25T17:47:37.123 回答