いくつかの異なる場所からの情報を組み合わせることで、これを行うことができました。まず、応答で Cookie を簡単に送信できるようにするために、Web.Api コントローラーはSystem.Net.Http.HttpResponseMessage
クラスのインスタンス ( link )を返す必要があります。
public class TestController : ApiController
{
public HttpResponseMessage Post([FromBody]CustomRequest request)
{
var resp = new HttpResponseMessage();
...
//create and set cookie in response
var cookie = new CookieHeaderValue("customCookie", "cookieVal");
cookie.Expires = DateTimeOffset.Now.AddDays(1);
cookie.Domain = Request.RequestUri.Host;
cookie.Path = "/";
resp.Headers.AddCookies(new CookieHeaderValue[] { cookie });
return resp;
}
}
しかし、どうすれば簡単に返送できることを確認できますCustomResponse
か?
その秘訣は、この質問に対する答えにあります。リクエスト オブジェクトでメソッドを使用します。取引全体は次のようになります。Request.CreateResponse<T>
public class TestController : ApiController
{
public HttpResponseMessage Post([FromBody]CustomRequest request)
{
// process request
...
var resp = Request.CreateResponse<CustomResponse>(
HttpStatusCode.OK,
new CustomResponse() { ... }
);
//create and set cookie in response
var cookie = new CookieHeaderValue("customCookie", "cookieVal");
cookie.Expires = DateTimeOffset.Now.AddDays(1);
cookie.Domain = Request.RequestUri.Host;
cookie.Path = "/";
resp.Headers.AddCookies(new CookieHeaderValue[] { cookie });
return resp;
}
}