use*_*080 18 c# cookies asp.net-web-api
我有一个Web.Api服务,它有一个接受自定义类并返回另一个自定义类的方法:
public class TestController : ApiController
{
public CustomResponse Post([FromBody]CustomRequest request)
{
// process request
...
// create response
CustomResponse resp = new CustomResponse() { ... };
return resp;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想发回一个cookie作为Http响应的一部分.我怎样才能做到这一点?
use*_*080 29
我设法通过组合来自几个不同地点的信息来做到这一点.首先,为了能够轻松地在响应中发送cookie,Web.Api控制器应该返回System.Net.Http.HttpResponseMessage类的实例(链接):
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;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我如何确保我可以轻松地发回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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26062 次 |
| 最近记录: |