3

DataTableReader を使用して DataTable からデータを読み取った後、byte[] 配列から Excel ファイルを作成しようとしていますが、これはすべて ashx ファイルです。しかし、それは機能していません。ここにいくつかのコードを投稿します:

DataTableReader RS = dt.CreateDataReader();
byte[] byteArray = GetData(RS);

context.Response.ContentType = "application/ms-excel";
context.Response.Clear();

//  context.Response.Charset = "";
try
{
    context.Response.BinaryWrite(byteArray);
    context.Response.OutputStream.Write(byteArray, 0, byteArray.Length);
    context.Response.BufferOutput = true;
    context.Response.Flush();
 }
 catch (Exception ex)
 {
    SendMail(ex.Message.ToString());
 }

次の例外がスローされます。

context.Response.SubStatusCode が System.PlatformNotSupportedException タイプの例外をスローしました。{"この操作には IIS 統合パイプライン モードが必要です。"} ashx

ヘッダーを使用する場合、IIS7 または Framework 3+ が必要であることはわかっています。

どんな助けでも大歓迎です!!

4

1 に答える 1

0

を設定してResponse ContentTypeから を設定ClearResponseます。次に、応答を 2 回書きますが、これも奇妙です。私はそれを変更し、End代わりにFlush.

動作させるための最小限のコードは次のようになります。

...
    DataTableReader RS = dt.CreateDataReader();             
    byte[] byteArray = GetData(RS);             

    try   
    {
        context.Response.Clear();
        context.Response.ContentType = "application/ms-excel";   
        context.Response.OutputStream.Write(byteArray, 0, byteArray.Length);       
        context.Response.End();    
    }    
    catch (Exception ex)    
    {       
        SendMail(ex.Message.ToString());    
    }
...
于 2012-10-19T16:59:32.793 に答える