問題タブ [virtualpathprovider]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1124 参照

asp.net - ディレクトリで終わる URL を提供できないカスタム VirtualPathProvider

CMS の一部として、実際のファイル構造の代わりに単一のファイルを提供するように設計されたカスタム VirtualPathProvider を作成しました。ファイルが実際にサーバー上に存在する場合、そのファイルが提供されるように設定しました。ファイルが存在しない場合は、そのアドレスに保存されている仮想コンテンツが代わりに提供されます。これは、データベースに保存されたファイルから Web サイトを提供する概念に似ていますが、この場合、コンテンツはサーバー上の XML ファイルに保存されます。

このセットアップは、特定のページに対してリクエストが行われたときに完全に機能します。たとえば、「www.mysite.com/foobar.aspx」を要求すると、「foobar.aspx」に保存されているコンテンツが提供されます。さらに、「www.mysite.com/subdir/foobar.aspx」を要求すると、適切なコンテンツも提供されます。

問題はこれです: 「www.mysite.com/foobar」のようなものを要求すると、物事が崩壊し始めます。ディレクトリがディスク上に存在し、IIS に index.aspx などの既定のページが構成されていない場合、"Directory Listing Denied" エラーが発生します。ディレクトリが存在しない場合は、単に 404 - Resource Not Found が表示されます。

私はいくつかのことを試しましたが、これまでのところ、何も違いはありませんでした。IIS は、ディレクトリ (または既存のディレクトリ内の既定のファイル) が存在しないことを単に通知し、独自のエラー コードを提供しているように見えます。アプリケーションに要求をどう処理するかを尋ねることはありません。アプリケーションに到達した場合、問題を解決できるのですが、現状ではかなり迷っています。これを引き起こしているIISの設定があるかどうかは誰にも分かりますか?

この件に関して見つけられるすべてのリソースを探しましたが、何もありません。データベースと ZIP ファイルの両方からコンテンツを提供するチュートリアルを読んだので、これが可能であることはわかっています。ヘルプ!

ps、IIS6 と .NET 3.5 を実行しています

0 投票する
1 に答える
1700 参照

master-pages - マスターページと仮想パスプロバイダーの問題

デプロイ可能なマスターページをdllに組み込み、仮想パスプロバイダーを使用して複数のASP.NETWebアプリケーションで参照しました。私が抱えている問題は、これが私のaspxページのソースビューを本当に混乱させることです。

これが私のaspx.csページ内のコードで、実際にMasterPageを各コンテンツページに添付していますが、今言ったように、<asp:Content>タグが本当に混乱し、コンテンツページをCTRL K + CTRL+Dできなくなりました。すべての検証エラー。ヘルプ!

0 投票する
3 に答える
1673 参照

asp.net - Asp.net MVC VirtualPathProvider ビューの解析エラー

Asp.net MVC 2 のプラグイン システムに取り組んでいます。埋め込みリソースとしてコントローラーとビューを含む dll があります。

StructureMap を使用してコントローラーのプラグイン dll をスキャンし、要求に応じてそれらを取り出してインスタンス化できます。これはうまくいきます。次に、この投稿から適応した VirtualPathProvider があります

VPP も正常に動作しているようです。ビューが見つかり、ストリームに引き出されます。Could not load type 'System.Web.Mvc.ViewUserControl<dynamic>'.次に、プラグ可能なビューの前の例で言及されていない解析エラーを受け取ります。この段階でビューがコンパイルされないのはなぜですか?

助けてくれてありがとう、

イアン

編集:

答えに近づいていますが、コンパイルされていない理由がはっきりしていません。バージョンを確認したコメントに基づいて、すべてが V2 にあり、V2 で動的が導入されたと信じているので、これで問題ありません。V3すらインストールしていないので、そうではありません。<dynamic>ただし、完全に削除すると、レンダリングするビューが得られます。

したがって、VPP は機能しますが、ビューが厳密に型指定されていない場合や動的でない場合に限られます

これは、型が動的に読み込まれる dll にあるため、厳密に型指定されたシナリオでは意味があるため、dll がビンにある場合でも、viewengine はそれを認識しません。アプリの起動時に型をロードする方法はありますか? オーダーメイドの Structuremap ソリューションではなく、MEF を使用することを検討しています。どう思いますか?

0 投票する
3 に答える
2617 参照

asp.net - ASP .NET MVC VirtualPathProvider

別のディレクトリにある MVC ビューを動的にロードする VirtualPathProvider を作成しています。MVC (FileExists 内) の前に呼び出しを正常にインターセプトしましたが、VirtualPathProvider では、次のような未加工の事前にルーティングされた URL を取得します。

個人的に、私はMVCが探すことを知っています

~/Apps/Administration/Views/Account/LogOn.aspx

そして、ファイルの内容を読み取る必要があること

しかし、「Views という名前のディレクトリを追加し、最後に aspx を追加する」というロジックをハードコーディングしたくありません。

このロジックはどこに保存され、仮想パス プロバイダーにどのように取得できますか?

ありがとう。はっきりしない場合は申し訳ありません。

0 投票する
2 に答える
559 参照

asp.net-mvc - ASP.NET MVC、カスタムVirtualPathProviderおよびIIS6

'埋め込み'ビューをロードするために独自のVirtualPathProviderを実装しました。

これは、Visual Studioから実行すると非常にうまく機能しますが、IIS6で実行すると、「ビューが見つかりません」というメッセージが表示されます。

web.configに不足しているものはありますか、それとも他の問題がありますか?

いくつかのログを追加しました。Application_StartにカスタムVirtualPathProviderを登録しても、System.Web.Hosting.MapPathBasedVirtualPathProviderは引き続き使用されているようです。

0 投票する
4 に答える
714 参照

asp.net - カスタム VirtualPathProvider が IIS6 で使用されていない

global.asax の Application_Start メソッドに次の行を追加しました。

ただし、このアプリケーションを IIS6 にデプロイする場合、'TestVirtualPathProvider' は使用されません (ASP.NET 開発サーバーでは使用されます)。

編集: デフォルトのパス プロバイダーは、常にその仕事を正しく行い、(埋め込まれていない) ビューを正しく提供してきました。問題は、独自のパス プロバイダーを使用して埋め込みビューを提供したいということです。したがって、最初は、次のワイルドカード マッピングが既に構成されていました。

使用されたワイルドカード マッピングのスクリーンショット

これが IIS6 で機能しない理由として考えられるものはありますか? 使用されている VirtualPathProvider に影響を与える可能性のある他の要因 (ハンドラーなど) はありますか?

0 投票する
1 に答える
868 参照

.net - ASP .NET VirtualPathProvider HttpCompileException

DB から aspx ファイルのコンテンツをロードしている VirtualPathProvider があります。私のaspxファイルが私のweb.configで明示的に言及されていない名前空間またはアセンブリへの参照を持っている場合を除いて、すべてがうまくいっているようです。

解決策は簡単そうですよね?アセンブリとインポート ディレクティブをページに追加します...しかし、それはうまくいかないようです。私はまだ次の HttpCompileException を取得します。

それでも、DBに保存されたtest.aspxページには次のものがあります。

ここで、MyApp.Data が既に AppDomain に読み込まれていることを既に知っており (実行時に AppDomain.CurrentDomain.GetAssemblies() をチェックして確認しました)、MyApp.Data アセンブリを読み込む要求が失敗していないこともわかっています(私は AppDomain.ResolveAssembly イベントにバインドしており、例外が発生する直前に発生していないため)。また、アセンブリ ディレクトリの名前を MyApp.Data123 (偽の名前) に変更すると、アセンブリをロードしようとしてページが爆発します。

ページからアセンブリ ディレクティブを完全に削除すると、名前空間 The type or namespace name 'MyApp' could not be found... が得られます。

ここで何が欠けているか分かりますか?ありがとう。

0 投票する
2 に答える
2765 参照

asp.net-mvc - ASP.NET MVC 2 VirtualPathProvider GetFileは、すべての要求に対して毎回

VirtualPathProviderを実装しました。VirtualPathProviderは、ファイルシステムからビューを読み取ります。

ただし、私の問題は、メソッドGetFile(string virtualPath)がすべてのリクエストに対して毎回実行されるわけではないことです。キャッシングと関係があると思いますよね?私が欲しいのは、リクエストごとに毎回ファイルを取得することです。場合によっては、ファイルシステムのページが変更され、ユーザーはシステムが変更をすぐに表示することを望んでいるためです。

ありがとう。