はい、可能です。この要求がマネージド パイプラインとルートを確実に通過するようにするには、次のハンドラーを web.config に追加する必要があります。
<system.webServer>
<handlers>
...
<add
name="MyCustomhandler"
path="Content/Ribbon/Scripts/Ribbon.Tabs.foo"
verb="GET"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
次に、このリクエストを処理する次のコントローラー アクションを使用できます。
public class RibbonController
{
// GET Content/Ribbon/Scripts/Ribbon.Tabs.foo
public ActionResult Index()
{
var file = Server.MapPath("~/App_Data/foo.bar");
return File(file, "application/foo-bar");
}
}
Content/Ribbon/Scripts/*
同じコントローラ アクションからのすべてのリクエストを処理することもできます。
<system.webServer>
<handlers>
...
<add
name="MyCustomhandler"
path="Content/Ribbon/Scripts/*"
verb="GET"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
そしてそのようなルート:
routes.MapRoute(
name: "ribbonbar",
url: "Content/Ribbon/Scripts/{name}",
defaults: new { controller = "Ribbon", action = "Index" }
);
そのようなアクションで:
public class RibbonController
{
// GET Content/Ribbon/Scripts/*
public ActionResult Index(string name)
{
...
}
}
特定のハンドラーを使用する代わりに、次のようにすべての要求に対してマネージド モジュールを有効にすることもできます。
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
...
</system.webServer>
ただし、このオプションを有効にすることはお勧めしません。これは、アプリケーションのパフォーマンスに悪影響を及ぼす可能性がある静的リソースからのリクエストであっても、すべてのリクエストがマネージド パイプラインを通過するためです。選択した URL に対してのみ、これを選択的に有効にすることをお勧めします。