我正在使用Visual Studios的內置ASP.NET開發服務器(VWD)在開發過程中測試我的網站。如何使用Visual Web Development服務器配置無擴展名的URL?
我想這個ASP.NET網站使用無擴展名的網址(網頁不需要aspx擴展名)。通常我會在IIS中配置一個自定義的404,它指向一個ASPX頁面。我如何與VWD做到這一點?
P.S.這不是一個ASP.NET MVC網站。
我正在使用Visual Studios的內置ASP.NET開發服務器(VWD)在開發過程中測試我的網站。如何使用Visual Web Development服務器配置無擴展名的URL?
我想這個ASP.NET網站使用無擴展名的網址(網頁不需要aspx擴展名)。通常我會在IIS中配置一個自定義的404,它指向一個ASPX頁面。我如何與VWD做到這一點?
P.S.這不是一個ASP.NET MVC網站。
沒有什麼特別的你需要做的。只需從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>
如果您想獲得像http://localhost:3000/value去http://localhost:3000/page.aspx?tag=value那麼你可以使用一個HttpModule,這也是一個很好的選擇,以404重定向。我也曾經做過同樣的事情。
我在之前的問題中發佈了一些example code。
這是一個使用UrlRewritingNet的Web.Config的例子。這樣做可以讓你無需編寫任何HttpModule或類似的東西來進行擴展重寫。
(全文here)
注:這個,因爲它是使用web.config中的system.webServer部分需要IIS7。
<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>
所有你需要做的就是添加的模塊中你的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 Dev環境中工作,第二個將用於IIS7