5

HttpResponseException「リクエスト」を使用して POST Web API アクションからを返そうとしています:

throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.NotFound, "File not in a correct size"));

そうするとき、私は得るValue cannot be null. Parameter name: request

基本的に -リクエストは null です。

私は何が欠けていますか?

ありがとうございました

4

7 に答える 7

2

@DavB.cs のように ApiControllers をネストした人向けの別のソリューション:

public class ParentController : ApiController
{
    public IHttpActionResult Foo()
    {
       ChildRepository.Foo();
       return Ok(...);
    }
}

public class ChildRepository : ApiController
{
    public HttpResponseMessage Foo()
    {
        // Do something
        return Request.CreateResponse(...);
    }
}

単純に、ParentController からの Request を次のように渡すだけです。

public class ParentController : ApiController
    {
        public IHttpActionResult Foo()
        {
           ChildRepository.Foo(Request);
           return Ok(...);
        }
    }

    public class ChildRepository
    {
        public HttpResponseMessage Foo(HttpRequestMessage request)
        {
            // Do something
            return request.CreateResponse(...);
        }
    }

リクエストは ApiController から来ます。これにより、「Request is null」の問題を回避できます。

これが誰かに役立つことを願っています。

于 2016-06-12T03:49:43.123 に答える
0

System.Net.Http.HttpRequestMessage の新しいインスタンスを作成する必要があります。以下はうまくいくでしょう

var リクエスト = 新しい HttpRequestMessage();
var response = request.CreateErrorResponse(HttpStatusCode.NotFound, "ファイルのサイズが正しくありません");

新しい HttpResponseException(応答) をスローします。
于 2014-09-28T21:56:21.090 に答える
0

nizariの答えは正しいですが、私は以下を使用してしまいました:

throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError)
                    {
                        Content = new StringContent("Invalid image dimensions. Image file must be " + image.Width + "x" + image.Height + "px"),
                        StatusCode = HttpStatusCode.Forbidden
                    });

を使用してクライアント側のコンテンツにアクセスしますjqXHR.responseText

みんな、ありがとう!

于 2013-07-18T05:56:16.580 に答える
0

nizari の回答を拡張すると、 ErrorMessage オブジェクトのリストを含めるために私が行ったことは次のとおりです。

IEnumerable errorList = new List<ErrorMessage>();

// ...

var error = new HttpError( "There were errors." ) 
{
    { "Errors", errorList }
};

var message = new HttpResponseMessage( HttpStatusCode.BadRequest )
{
    Content = new ObjectContent<HttpError>( error, GlobalConfiguration.Configuration.Formatters.JsonFormatter )
};

throw new HttpResponseException( message );
于 2013-10-01T19:37:20.873 に答える