29

私はこのブログ投稿でそれを見ましたが、それは実際にそれを「有効にする」方法を示していません。また、デフォルトでは有効になっていないようです。

http://msdn.microsoft.com/en-us/library/hh835786(v=vs.108).aspxで定義されているように、これが拡張メソッドであることはわかっていますが、どうすればアクセスできますか?入力Request.CreateErrorResponseすると、コンパイラはそれを認識しません。

私はすでにusing System.Net.Httpです。

4

8 に答える 8

46

リリースバージョンでもこれに気づきました。また、適切なusingステートメントがない場合は、エラーが発生します。あなたが必要です:

using System.Net.Http;

あなたがすでにこれを持っているとしても:

using System.Web.Http.Controllers;
于 2012-11-16T20:54:32.890 に答える
3

まだプレリリースまたはリリースバージョンを使用していますか?リリース直前まで表示されず、以前のバージョンのwebapiリリースには存在しなかった拡張機能がいくつかありました。これがその1つであるかどうかはわかりませんが、問題の原因である可能性があります。

于 2012-09-23T21:04:26.757 に答える
3

RequestはApiControllerクラスのパブリックプロパティであり、そのコントローラーのすべてのAPIアクションで使用できる必要があります。

public abstract class ApiController
{
   ...
   public HttpRequestMessage Request { get; set; }
}

これが私のために働く小さなコードサンプルです:

using System.Net;
using System.Net.Http;
using System.Web.Http;


public class MyFirstApiController : ApiController
{
    // GET 
    public HttpResponseMessage Get(int id)
    {
        return Request.CreateErrorResponse(HttpStatusCode.ExpectationFailed, "Some   message here");
    }
}

興味深いことに、System.Net.Httpを使用して削除した場合。ステートメント、RequestにはCreateErrorResponse()メソッドがなくなりました。

于 2012-09-25T21:20:07.203 に答える
2

重要な点は回答済みですが。

もう1つの最も愚かな可能性は、間違ったタイプのコントローラーを選択した可能性があることです。Web APIコントローラーを作成したことを確認してください。MVCコントローラーの場合は、作成できません。

Request.CreateErrorResponse()

この問題が発生する可能性があるもう1つの可能性。

于 2017-03-26T17:04:04.140 に答える
1

.netコアに。を追加しMicrosoft.AspNetCore.Mvc.WebApiCompatShim.dllます。

https://docs.microsoft.com/en-us/dotnet/api/system.net.http.httprequestmessageextensions.createerrorresponse?view=aspnetcore-2.0

于 2018-04-16T09:45:03.217 に答える
1
you can use from that In block Try-Catch.

 [HttpGet]
    public HttpResponseMessage DownloadVideo(Guid id, string title)
    {
        try
        {
          //Your Code at the end return result
        }
        catch (Exception ex)
        {
            return Request.CreateErrorResponse(HttpStatusCode.NotFound, ex.Message);
        }
    }
于 2018-10-10T12:17:15.630 に答える
0

System.Web.Httpアセンブリを使用します。ソース:CreateErrorResponseメソッド

于 2015-10-15T20:33:32.283 に答える
-1

私の推測では、これはあなたが参照していない3番目のアセンブリであり、それが問題です。

残念ながら、私は自分のコンピューターにアクセスできず、電話で閲覧できないため、ファイルを追跡できません。ドキュメントによると、それはSystem.Web.Http.SelfHost.dllにあるはずなので、そのファイルを検索して見つけることができると思います。

于 2012-09-23T20:18:30.137 に答える