Visual Studio のビルトイン ASP.NET 開発サーバー (VWD) を使用して、開発中に Web サイトをテストしています。
この ASP.NET Web サイトで拡張子のない URL を使用したいと考えています (ページに aspx 拡張子は必要ありません)。通常、IIS でカスタム 404 を構成して、ASPX ページに誘導します。VWDでこれを行うにはどうすればよいですか?
PS これは ASP.NET MVC Web サイトではありません。
Visual Studio のビルトイン ASP.NET 開発サーバー (VWD) を使用して、開発中に Web サイトをテストしています。
この ASP.NET Web サイトで拡張子のない URL を使用したいと考えています (ページに aspx 拡張子は必要ありません)。通常、IIS でカスタム 404 を構成して、ASPX ページに誘導します。VWDでこれを行うにはどうすればよいですか?
PS これは ASP.NET MVC Web サイトではありません。
これは、UrlRewritingNetを使用したWeb.Configの例です。これを行うと、HttpModuleなどを記述しなくても拡張機能のない書き換えを行うことができます。
(記事全文はこちら)
注:これには、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>
あなたがする必要がある特別なことは何もありません。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 リダイレクト。私も同じことをしていました。
以前の質問にサンプルコードを投稿しました。