2

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

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

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

4

4 回答 4

2

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

(全文在这里

注意:这需要 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>  

于 2009-08-08T21:23:29.800 回答
1

您需要做的就是在 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

于 2009-08-28T19:35:28.223 回答
1

你不需要做任何特别的事情。只需从 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>
于 2009-01-19T22:19:13.473 回答
1

如果您尝试获取类似http://localhost:3000/value的内容以访问http://localhost:3000/page.aspx?tag=value那么您可以使用 HttpModule,这也是一个很好的替代404重定向。我以前也做过同样的事情。

我在上一个问题中发布了一些示例代码

于 2009-01-19T22:32:38.907 回答