私のソリューションには 2 つのプロジェクトがあります:MyApp.WebApi
とMyApp.Web
.
には、必要なデータを返すためのMyApp.WebApi
すべてのが含まれています。を返す必要があるアクションもあり、Cookie に を自動的に設定します。ApiController
Json
AccountController.Login
TokenId
TokrnId
[HttpGet]
public HttpResponseMessage Login(string username, string password)
{
var principal = // Some code to get the principal
var tokenId = principal.TicketId;
var resp = new HttpResponseMessage(HttpStatusCode.OK);
var cookie = new CookieHeaderValue("TokenId", tokenId)
{
Expires = DateTimeOffset.Now.AddDays(1),
Domain = this.Request.RequestUri.Host, Path = "/"
};
resp.Headers.AddCookies(new[] { cookie });
resp.Content = new StringContent(tokenId);
return resp;
}
ブラウザを使用すると正常に動作します。ただし、リクエスト内で使用する場合はMyApp.Web
、Cookieを使用し$.getJSON
てリクエストを送信しないでください。TokenId
$.getJSON(serviceAddress)
.done(function (result, status) {
// Do some logic
})
.fail(function (result, status) {
logger.logError(result);
});
質問1。CookieHttpRequest
を送信して sを作成するにはどうすればよいですか?MyApp.Web
質問2。string
の代わりにLogin メソッドが返されるようにしHttpResponseMessage
ます。ただし、その場合、返される応答に直接アクセスできないため、Cookie を設定する方法がわかりません (例resp
) 。