1

私たちはアプリケーションの再構築を行っており、現在のアイデアは、コードをコア ライブラリ コード + 開発者向けにカスタマイズされたコードに分割することです。

デフォルトで空のフォルダー(つまり「カスタム」)を作成する可能性を考えています。開発者が既存のaspページまたは新しいページからコードをカスタマイズする必要がある場合は、それらをフォルダーに入れるだけですそしてそれはうまくいくでしょう。例:

コア フォルダーにデフォルトの ASP ページが格納されているとします。

core\customer\createCustomer.asp <-- the default page

開発者がそのページを上書きしたい場合は、その asp ページをカスタム フォルダーにコピーする必要があります。

custom\customer\createCustomer.asp <-- modified asp page

アプリケーションは、コア フォルダではなく、カスタム フォルダにあるものを自動的にロードします。

これはC#で実行できますか?

4

2 に答える 2

0

VirtualPathProviderを使用して、「実際に要求されたファイル」とは異なるファイルをロードできます。これは、IISやキャッシングなどでもうまく機能します。

基本的に、、、、および、メソッドを継承しVirtualPathProviderてオーバーライドします(リンクされたページに例があります)。次に、AppInitializeで、プロバイダーをに登録します。FileExistsGetFileDirectoryExistsGetDirectory

HostingEnvironment.RegisterVirtualPathProvider(sampleProvider);

ちなみに、ユーザーが行った変更を元に戻して、いわば潜在的な誤編集を復元できるように、別の(編集不可能な)ページを用意することを忘れないでください。私はおそらく単純なバージョン管理システムを持っていて、ユーザーが変更を加えるたびにcommitを使用し、ユーザーが以前の変更セットに戻れるようにします。

于 2012-10-08T07:39:10.613 に答える
0

この MSDN の記事では、実装を使用して HTTP リクエストをインターセプトし、カスタム アクションを実行する方法について説明していますIHttpModule(ログを指摘していますが、リクエストをインターセプトしているため、「カスタマイズされた」コードなどの別のコンテンツをフェッチすることもできます)。

于 2012-10-08T07:47:57.380 に答える