【解決方法】Content-Length、Content-Type、および Last-Modified を HTTP 応答メッセージ ヘッダーに追加する方法

プログラミングQA


やあ、

.net を使用して、Content-Length、Content-Type、および Last-Modified を HttpResponseMessage ヘッダーに追加する方法。

サーバーから応答を返す必要があるこれらのフィールドを追加した後、これらすべての値を手動で応答に追加する必要があります。
私はこれらのフィールドを追加しようとしました。

C#
httpResponse.Content.Headers.Add("Content-Length", item.Size.ToString());
   httpResponse.Content.Headers.Add("Content-Type", item.ContentType);

しかし、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」として例外をスローします。

私がこのように追加している場合

C#
httpResponse.Headers.Add("Content-Length", item.Size.ToString());
                  httpResponse.Headers.Add("Content-Type", item.ContentType);

次のエラーが発生しています
「ヘッダー名が誤って使用されています。要求ヘッダーが HttpRequestMessage で、応答ヘッダーが HttpResponseMessage で、コンテンツ ヘッダーが HttpContent オブジェクトで使用されていることを確認してください。」

これらのフィールドを HttpResponsesMessage に追加するのを手伝ってください。

ありがとう
満杯

解決策 1

「コンテンツ タイプ」は、次の例のように既存のプロパティを使用して設定する必要があります。

C#
httpResponse.ContentType = "application/vnd.ms-excel";

ダウンロードするファイルを追加するなどの他のヘッダーは、例のようにする必要があります。

httpResponse.AddHeader("content-disposition", "attachment; filename=" + this.FileDownloadName);

次の例のように、オブジェクト httpResponse を ASPX コード ビハインドから使用する必要があります。

C#
HttpResponse httpResponse = HttpContext.Current.Response;

解決策 2

このように追加できる解決策を見つけました

C#
httpResponse.Content.Headers.ContentType = new MediaTypeHeaderValue(item.ContentType);
                  httpResponse.Content.Headers.ContentLength = item.Size;
                  var info = TimeZoneInfo.FindSystemTimeZoneById("UTC");
                  httpResponse.Content.Headers.LastModified = TimeZoneInfo.ConvertTime(item.LastModifiedDate, info);

コメント

タイトルとURLをコピーしました