カスタム認証、監査、プロファイリングを行う必要がある Global.asx ファイルがあります。これが必要なのは、SAML ベースの SSO システムをサポートし、通常の .Net 認証 (SAML または混合認証をサポートしていない) をオーバーライドする必要があるためです。
.js
、.css
、.png
などの静的ファイルに対して起動したくありません
Cassini/WebDev と IIS7 ではそうです。
私がしたいのは、this.Request.IsStaticFile
(残念ながら存在しません)静的ファイルを識別するための簡単なチェックです。
これを書くのはかなり簡単だと思いますが、すでに存在していなければならないもののように感じます.IISは静的ファイルなどにキャッシュポリシーを既に適用しています.
IIS 構成の変更ではなく、コード ソリューションが必要です。
アップデート
これは私の現在の回避策です:
/// <summary>Hold all the extensions we treat as static</summary>
static HashSet<string> allowedExtensions = new HashSet<string>(StringComparer.OrdinalIgnoreCase)
{
".js", ".css", ".png", ...
};
/// <summary>Is this a request for a static file?</summary>
/// <param name="request">The HTTP request instance to extend.</param>
/// <returns>True if the request is for a static file on disk, false otherwise.</returns>
public static bool IsStaticFile(this HttpRequest request)
{
string fileOnDisk = request.PhysicalPath;
if (string.IsNullOrEmpty(fileOnDisk))
{
return false;
}
string extension = Path.GetExtension(fileOnDisk);
return allowedExtensions.Contains(extension);
}
これは機能し、十分に高速ですが、ひどくぎこちなく感じます。特に、考えられていない新しい静的ファイルを追加すると、拡張機能に依存するとエラーが発生しやすくなります。
IIS 構成を変更せずに、より良い方法はありますか?