Web API でデモ ログイン サービスを作成したいのですが、応答に Cookie を設定する必要があります。それ、どうやったら出来るの?または、承認を行うためのより良い方法はありますか?
31246 次
2 に答える
26
クラスで定義されている拡張メソッドへの参照を追加してSystem.Net.Http.Formatting.dll
使用します。AddCookies
HttpResponseHeadersExtensions
これは、このアプローチとMSDN トピックを説明するブログ投稿です。
そのアセンブリがオプションではない場合、これがオプションになる前の私の古い回答は次のとおりです。
古い回答が続きます
HttpResponseMessage
私は、単体テストが可能ではなく、ホストによっては常に適用されるとは限らない HttpContext に出血することなく、の領域内にとどまるアプローチを好みます。
/// <summary>
/// Adds a Set-Cookie HTTP header for the specified cookie.
/// WARNING: support for cookie properties is currently VERY LIMITED.
/// </summary>
internal static void SetCookie(this HttpResponseHeaders headers, Cookie cookie) {
Requires.NotNull(headers, "headers");
Requires.NotNull(cookie, "cookie");
var cookieBuilder = new StringBuilder(HttpUtility.UrlEncode(cookie.Name) + "=" + HttpUtility.UrlEncode(cookie.Value));
if (cookie.HttpOnly) {
cookieBuilder.Append("; HttpOnly");
}
if (cookie.Secure) {
cookieBuilder.Append("; Secure");
}
headers.Add("Set-Cookie", cookieBuilder.ToString());
}
次に、次のように応答に Cookie を含めることができます。
HttpResponseMessage response;
response.Headers.SetCookie(new Cookie("name", "value"));
于 2013-01-14T05:05:59.863 に答える
9
Cookie を HttpContext.Current.Response.Cookies コレクションに追加できます。
var cookie = new HttpCookie("MyCookie", DateTime.Now.ToLongTimeString());
HttpContext.Current.Response.Cookies.Add(cookie);
于 2012-03-20T19:44:01.060 に答える