【问题标题】:How do I configure extensionless URLs with the Visual Web Development server?如何使用 Visual Web Development 服务器配置无扩展 URL?
【发布时间】:2010-10-02 07:59:03
【问题描述】:

我正在使用 Visual Studios 的内置 ASP.NET 开发服务器 (VWD) 在开发过程中测试我的网站。

我希望这个 ASP.NET 网站使用无扩展名 URL(页面不需要 aspx 扩展名)。通常我会在 IIS 中配置一个指向 ASPX 页面的自定义 404。我将如何使用 VWD 做到这一点?

附注这不是一个 ASP.NET MVC 网站。

【问题讨论】:

    标签: asp.net url url-rewriting vwdexpress


    【解决方案1】:

    这是一个使用 UrlRewritingNet 的 Web.Config 示例。这样做将允许您进行无扩展重写,而无需编写任何 HttpModule 或类似的东西。

    (全文here)

    注意:这需要 IIS7,因为它使用 web.config 的 system.webServer 部分。


    <configSections>  
        <section name="urlrewritingnet"    
                 restartOnExternalChanges="true"    
                 requirePermission="false"    
                 type="UrlRewritingNet.Configuration.UrlRewriteSection,  UrlRewritingNet.UrlRewriter" />  
    </configSections>  
    
    <system.webServer>  
        <modules runAllManagedModulesForAllRequests="true">   
            <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />  
        </modules>  
    </system.webServer>  
    
    
    <urlrewritingnet rewriteOnlyVirtualUrls="true"    
                     contextItemsPrefix="QueryString"    
                     xmlns="http://www.urlrewriting.net/schemas/config/2006/07">   
        <rewrites>  
            <!--Enable HTM(L) Extensions-->  
            <add name="pageHTML"    
                 virtualUrl="^~/(.+).htm(.*)"    
                 redirectMode="Permanent"  
                 rewriteUrlParameter="ExcludeFromClientQueryString"    
                 destinationUrl="~/$1.aspx"    
                 ignoreCase="true" />  
            <!--Fix the WebResource JS Error-->  
            <add name="WebResourceFix"    
                 virtualUrl="^~/WebResource.axd(.*)"  
                 rewriteUrlParameter="IncludeQueryStringForRewrite"    
                 destinationUrl="~/WebResource.axd$1"    
                 ignoreCase="true"/>   
            <!--Fix the ScriptResource JS Error-->  
            <add name="ScriptResource"    
                 virtualUrl="^~/ScriptResource.axd(.*)"  
                 rewriteUrlParameter="IncludeQueryStringForRewrite"    
                 destinationUrl="~/ScriptResource.axd$1"    
                 ignoreCase="true"/>   
            <!--Allow Extensionless Page Extensions-->  
            <add name="pageExtensionless"  
                 virtualUrl="^~/(.+)$"  
                 redirectMode="Permanent"  
                 rewriteUrlParameter="ExcludeFromClientQueryString"  
                 destinationUrl="~/$1.aspx"  
                 ignoreCase="true" />  
        </rewrites>  
    </urlrewritingnet>  
    

    【讨论】:

      【解决方案2】:

      您无需做任何特别的事情。只需从 ASPX 页面文件中删除 .aspx 扩展名,它应该可以与 VWD 一起正常工作。 Visual Studio 设计者可能会抱怨没有为扩展 '' 注册构建提供程序,但您可以忽略它。然后你可以引用没有扩展名的页面:

      http://localhost:2181/Default
      
      <%@ Page Language="C#"%>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" >
      <head runat="server">
          <title>Untitled Page</title>
      </head>
      <body>
          <form id="form1" runat="server">
          <div>
          Hello World
          </div>
          </form>
      </body>
      </html>
      

      【讨论】:

        【解决方案3】:

        如果您试图让http://localhost:3000/value 之类的东西转到http://localhost:3000/page.aspx?tag=value,那么您可以使用 HttpModule,它也是 404 重定向的一个很好的替代方案。我以前也做过同样的事情。

        我在上一个问题中发布了一些example code。

        【讨论】:

          【解决方案4】:

          您需要做的就是在 web.config 中的两个不同位置添加模块...

          <system.web>
              <pages theme="Default" />
              <httpModules>
                  <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
              </httpModules>
          </system.web>
          
          
          <system.webServer>
              <modules runAllManagedModulesForAllRequests="true">
                  <remove name="UrlRewriteModule"/>
                  <add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
              </modules>
          </system.webServer>
          

          第一个是将它添加到您的 httpModules 中,将在您的 VS 开发环境中工作,第二个将用于 IIS7

          【讨论】:

            猜你喜欢
            • 2021-11-21
            • 2012-05-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-16
            相关资源
            最近更新 更多