【发布时间】:2020-04-26 05:08:20
【问题描述】:
我的 Action 方法正在返回 HttpResponseMessage 但是,我想摆脱 Microsoft.AspNetCore.Mvc.WebApiCompatShim NuGet 包(基本上是为了弥补差距而提供的)将 Asp.Net Web API 代码移植到 .Net Core)并使用 IActionResult/ActionResult 而不是 HttpResponseMessage。
我的 Action 方法如下所示:
[HttpGet]
[Route("GetTemplate")]
public async Task<HttpResponseMessage> GetTemplate(string id) {
var userAgent = this.Request.Headers.UserAgent;
bool IsWindows = true;
if(userAgent.ToString().ToLower().Contains("apple")) {
IsWindows = false; //false
}
var template = await _templateService.GetTemplateContent(id);
HttpResponseMessage responseMsg = new HttpResponseMessage();
if(IsWindows) {
responseMsg.Content = new StringContent(JsonConvert.SerializeObject(template));
responseMsg.RequestMessage = Request;
responseMsg.StatusCode = HttpStatusCode.OK;
responseMsg.Content.Headers.ContentType =
new MediaTypeHeaderValue("application/json");
} else {
responseMsg.Content = new ByteArrayContent(template.ContentBytes);
responseMsg.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileNameStar = template.Name };
responseMsg.Content.Headers.Add("x-filename", template.Name);
responseMsg.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
responseMsg.Content.Headers.ContentLength = template.ContentBytes.Length;
responseMsg.RequestMessage = Request;
responseMsg.StatusCode = HttpStatusCode.OK;
}
return (responseMsg);
}
【问题讨论】:
标签: asp.net-core asp.net-web-api .net-core asp.net-core-mvc asp.net-core-webapi