0

ASP.net Web アプリケーションで ClockOnce を使用して Windows フォーム アプリケーションを公開しています。ユーザーが公開ボタンをクリックすると、clickonce アプリケーションがダウンロードされることを理解しました。ダウンロード URL を知っている人なら誰でもダウンロードできるため、このオプションは安全ではありません。認証を追加するには、codeproject からの David P Henry の提案に従って httphandler を使用しています。すべて正常に動作しています。clickOnce アプリ ファイルを Web アプリの Application Files フォルダーに配置する代わりに、このアプローチにセキュリティを追加したいと思います。これらのファイルを SQL Server に配置したいと考えています。したがって、私のアプリケーションはこれらのファイルを SQL Server からダウンロードしてユーザーに送信できるはずです。

それはClockonceで可能ですか?

可能であれば、アプローチを知りたいです。

4

1 に答える 1

0

はい、可能です。VirtualPathProvider を使用して、ファイル システムではなく SQL からファイルを読み取ります。

ClickOnce は http/https 経由でファイルを要求するため、各要求をインターセプトして独自のバージョンを渡すことができます (この場合、サーバーのファイル システムではなく SQL から読み取られます)。

以下にリンクされているのは、カスタム VirtualPathProvider を利用する方法を示す簡単なプロジェクトです。

http://www.codeproject.com/Articles/16848/Creating-Custom-Virtual-Path-Provider-in-ASP-Net-2

ファイルを保存するディレクトリをアプリケーションに変換し、Global.asax をアプリケーションのルートに追加することをお勧めします。

次に、ルート ディレクトリの *.deploy および *.manifest のハンドラー マッピングを追加して、各ファイルが要求されたときに VirtualPathProvider が実行されるようにします。

オーバーライドされた FileExists メソッド内 (VirtualPathProvider 内) に、ファイルが存在するかどうかを返すロジックを記述します。ここに承認を入れることもできますが、この関数が false を返すとサーバーが 404 を返すため、ClickOnce が Http 応答をキャッシュするかどうかはわかりません。

VirtualFile の Stream Open() 内で、SQL サーバーから読み取った MemoryStream を返します。

お役に立てれば。

于 2012-09-17T10:39:41.023 に答える