1

基本的に、Windows 認証が必要な場所からファイルを提供する必要があります。クライアントが直接処理する代わりに、クライアントが私のシステムにログインした後、私のサーバー上にあるかのようにファイルを簡単にダウンロードできるプロセスを実装したいと考えています。これは私がこれまでに持っているもので、正しく動作していないようです:

// Create the request
WebRequest request = HttpWebRequest.Create(button.CommandArgument);
request.Credentials = new NetworkCredential(_username,_password);


// Get the response
WebResponse response = request.GetResponse();
StreamReader responseStream = new StreamReader( response.GetResponseStream());

// Send the response directly to output
Response.ContentEncoding = responseStream.CurrentEncoding;
Response.ContentType = request.ContentType;
Response.Write(responseStream.ReadToEnd());
Response.End();

これを試すと、ファイルを表示できますが、エンコーディングまたはコンテンツ タイプに何か問題があり、たとえば、PDF には (16 ページのテキストではなく) 16 の空白ページが含まれます。

私は何が欠けているのですか?

この質問の言い回しのより良い方法がある場合は、この質問のタイトルを自由に変更してください

更新: 以下の 2 つの応答を試しましたが、うまくいきませんでした。コンテンツ タイプとエンコーディングは問題ないと思いますが、認証に失敗している可能性があります。コンテンツの長さが実際よりもはるかに小さい... Windows 認証に間違った方法を使用していますか?

4

3 に答える 3

1

最後のコード ブロックで間違ったコンテンツ タイプを送信しているようです。取得したファイルのコンテンツ タイプではなく、ユーザーの元のリクエストのタイプを送信しています。これを変える:

Response.ContentType = request.ContentType;

に:

Response.ContentType = response.ContentType;
于 2009-06-22T20:08:46.347 に答える
1

あなたが持っている方法/ものに応じて。私はいくつかのことをします。

Response.Clear()まず、レンダリングされた可能性のあるものをすべて削除します。

次に、content-disposition を設定してヘッダーを追加し、ユーザーに書き込むだけでなく、実際の添付ファイルとして送信します。

于 2009-06-22T20:15:12.573 に答える