0

VHDドライブのサーバーパスを取得したい。私は紺碧のWebアプリケーションに取り組んでいます。いくつかのファイルをアップロードして Test.VHD ドライブに保存しました (たとえば)。これは、いくつかのブロブ コンテナー「ドライブ」内のクラウド ドライブです (たとえば)。次の方法でマウントしてマッピングしました。

driveLetter = drive.Mount(localCache.MaximumSizeInMegabytes - 20, DriveMountOptions.Force);

"driveLetter" は "A:\" (たとえば) です。現在、すべてのpdfファイル名をページ上のリンクボタンとして表示しています。それらのファイルをクリックすると、javascript関数を使用してブラウザでそのpdfファイルを開きたい

window.open(pdfPath, pdfName, 'scrollbars=yes, resizable=yes');

私の質問は、「pdfPath」パラメーターとして何を渡す必要があるかです。

パスは「A:\Uploads\pdfName.pdf」です。しかし、私はそれを渡すことができません。ユーザーが表示できるように、 http://servername:port/pathのように渡す必要があります。

しかし、 http://servername:port/pathのようなリンクに変換する方法がわかりません。これにより、ブラウザでpdfを表示できます。

私を助けてください、

前もって感謝します。

4

2 に答える 2

0

そこには小さな混乱があります。

紺碧のドライブは、技術的にはAzure Blob Storageに格納されているBLOBであるため、URLがあります。対照的に、Azureドライブのコンテンツには、URLを使用して直接アクセスすることはできません。Azureドライブに含まれているファイルを公開する場合は、WindowsAzureインスタンスからファイルにアクセスできるようにする必要があります。

これを行うには、ドライブをマウントするときにAzureドライブをIISの仮想フォルダーとしてマッピングします。.Netでコーディングする場合は、System.Web.Administrationを確認してください(プロジェクトに含める必要があります。これはIISの一部であり、CLRに直接含まれていません)。別の言語でコーディングする場合、最も簡単な方法は、appcmd.exeを呼び出して仮想フォルダーを定義することです。

ピエール

于 2012-04-05T18:05:59.677 に答える
0

これがあなたの質問に直接答えているわけではないことは承知していますが、... Azure Drives に書き込むことで、あなたがしていることにいくつかの制限があることに気付くと思います:

  • vhd への書き込みアクセス権を持つことができるのは、常に 1 つのロール インスタンスだけです。これは、インスタンスごとに一意の vhd がない限り (または、追加の各インスタンスが単に読み取り専用のスナップショットを作成しない限り)、ソリューションが 1 つのインスタンスを超えて拡張されることを意味します。
  • vhd 内のファイルへの直接リンクを外部に提供することはできないため、個々のファイルにアクセスするには Role インスタンスを経由する必要があります。
  • ファイルを管理するには、Azure ドライブをマウントする必要があります。つまり、Windows Azure 以外のコードからファイルを管理することはできません (Azure ドライブは、Windows Azure ロール インスタンスによってのみマウント可能です)。

個々のファイルを個々のブロブに書き込むことをお勧めします。これには、シナリオで Azure ドライブを使用するよりもいくつかの利点があります。

  • どのインスタンスも、個々のファイル (個別の BLOB 内の各ファイル) を読み書きできます。
  • Web ページにダイレクト ファイル URL を埋め込むことができます。これにより、Role インスタンスの 1 つを介してルーティングする必要なく、BLOB に直接アクセスできます (IIS が必要ないため、そのインスタンスの負荷が軽減されます)。
  • 個々の BLOB を非公開にすることを選択し、Shared Access Signatures を介してプライベート BLOB に URL を提供することもできます
  • 個々の BLOB をリモートで管理できます。これを行うのに役立つサードパーティ ツールがいくつかあります。
  • 必要に応じて、ストレージの CDN (エッジ キャッシュ) を有効にすることができます。これにより、URL をソース BLOB に直接ではなく、CDN リンクに向けることができます。これは、公開されている BLOB に限定されます。
于 2012-04-07T02:11:04.610 に答える