16

MVC3 コントローラー アクションから HTTP 403 を返し、「ステータスの説明」を特定の文字列に設定し、結果のコンテンツでその文字列を返して、ブラウザーに表示されるようにします。

コンテンツを指定するために戻ることはできContentResultますが、ステータス コード (403 など) やステータスの説明を返すことはできません。HttpStatusCodeResultステータス コードとステータスの説明を指定するために使用できますが、結果の内容は指定できません。

3 つすべてを含むアクションの結果を作成するにはどうすればよいですか?

4

3 に答える 3

-1

問題が GetAwaiter().OnCompleted(...) であることに気付く前に、このコードを機能させようとして夢中になりました。これが私が働いたバージョンです:

public class ApiControllerBase : ApiController
{
   ...
   // Other code
   ...

   public override Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)
   {
      return base
         .ExecuteAsync(controllerContext, cancellationToken)
         .ContinueWith(t =>
         {
            t.Result.Headers.CacheControl = new CacheControlHeaderValue()
            {
               NoStore = true,
               NoCache = true,
               MaxAge = new TimeSpan(0),
               MustRevalidate = true
            };
            t.Result.Headers.Pragma.Add(new NameValueHeaderValue("no-cache"));
            t.Result.Content.Headers.Expires = DateTime.Parse("01 Jan 1990 00:00:00 GMT");

            return t.Result;
         }, cancellationToken);
   }
}
于 2014-10-21T20:17:59.063 に答える