質問

私は、高い低いを検索し、まだ明確な答えを見つけることができません。

どのように私のconfigureがASP.NETランタイムは、のすべてのの要求を処理するように7.0またはIISでWebアプリケーションのIISん - ?など*.js*.gif、などの静的ファイルに含めたもの。

次のように私は何をしようとしていることである。

私たちは、親切SaaSyサイトの持っているすべての顧客のために私たちができる「ブランド」。手段はカスタムマスターページを開発し、*.cssや他の画像の束を使用した「ブランディング」ます。

当然のことながら、私はこのように動作VirtualPathProviderを、使用しています:

public override System.Web.Hosting.VirtualFile GetFile(string virtualPath)
{
    if(PhysicalFileExists(virtualPath))
    {
        var virtualFile = base.GetFile(virtualPath);
        return virtualFile;
    }

    if(VirtualFileExists(virtualPath))
    {
        var brandedVirtualPath = GetBrandedVirtualPath(virtualPath);
        var absolutePath = HttpContext.Current.Server.MapPath(brandedVirtualPath);

        Trace.WriteLine(string.Format("Serving '{0}' from '{1}'", 
            brandedVirtualPath, absolutePath), "BrandingAwareVirtualPathProvider");

        var virtualFile = new VirtualFile(brandedVirtualPath, absolutePath);
        return virtualFile;    
    }

    return null;
}
次のように基本的な考え方は次のとおりです。私たちは順番に「ブランド」のフォルダが含まれて私たちのWebアプリケーション、内部brandingフォルダを持っている、「ブランド」ホスト名に等しいと。 http://foo.example.com/branding/foo_example_comからコンテンツを使用する必要があるのに対し、すなわち、http://bar.example.com/への要求は、branding/bar_example_comから静的ファイルを使用する必要があります。

今私はIISが何をしたいのか、この全体の「インフラ」を使用して、正しいファイルを役立つであろうStaticFileHandlerに静的ファイルへのすべての要求を転送することです。私は、私が設定しこれを行うにはIISができない可能性があるとして、しかし、試してみてください。

役に立ちましたか?

解決

II7は、既にアプリケーションプールのManaged Pipeline ModeIntegratedに設定されている場合、デフォルトであることを行います。統合モードでは、ASP.NETは、静的オブジェクトのためのものも含め、すべての要求を処理します。

あなたがClassic Modeでアプリケーションプールを残している場合は、

は、あなたが明示的にさまざまな静的な拡張のためのハンドラを作成するために、IIS 6で使用するのと同じテクニックを使用する必要があります。

コメントに基づいての追加情報の:私はあなたの行方不明の部分が他の拡張機能(.jsファイル、.cssの、など)を処理するためにHttpHandlerを作成していると思います。これがないと、その後、ASP.NETは、これらの種類のファイルのデフォルトの処理を使用します。あなたのweb.configファイルであなたへの参照をハンドラ作成します。 は静的ファイルのためのHttpHandlerを作成する例です。

他のヒント

賞賛みんなに、しかし、問題は全く別の空間にいた。

VirtualPathProviderは、プリコンパイルされたウェブサイトで使用することはできません。私は激怒しています。

scroll top