我的控制器中有這個:
[
HttpPost]
public async Task<ActionResult> UpdateCalendarEntry(CalendarEntry model)
{
try
{
model.LabelColor = "blue";
var result = await repo.AddCalendarEntry(model);
if(result == null)
{
return StatusCode(StatusCodes.Status204NoContent, "Cannot Do It!");
}
return apiResult.Send200(result);
}
catch (Exception ex)
{
return apiResult.Send400(ex.Message);
}
}
我在 Blazor WASM 的服務中得到回應,如下所示:
using var response = await httpClient.SendAsync(request);
var content = await response.Content.ReadAsStringAsync();
// auto logout on 401 response
if (response.StatusCode == HttpStatusCode.Unauthorized)
{
navigationManager.NavigateTo("login");
return default;
}
if(response.StatusCode == HttpStatusCode.BadRequest)
{
await helperService.InvokeAlert("Bad Request", $@"{response.ReasonPhrase}", true);
}
if(response.StatusCode == HttpStatusCode.NoContent)
{
var x = response.Content.ReadAsStringAsync();
await helperService.InvokeAlert("Bad Request", $@"{response.ReasonPhrase}", true);
}
// throw exception on error response
if (!response.IsSuccessStatusCode)
{
//var error = await response.Content.ReadFromJsonAsync<Dictionary<string, string>>();
//throw new (error["message"]);
return default;
//throw new ApplicationException
// ($"The response from the server was not successful: {response.ReasonPhrase}, "
// $"Message: {content}");
}
我需要從控制器收到“無內容”訊息“無法做到!”的回復。我正在嘗試 ReasonPhrase,但我不知道如何將錯誤放在那里。
uj5u.com熱心網友回復:
警告,未測驗。
[HttpPost]
public async Task<ActionResult> UpdateCalendarEntry(CalendarEntry model)
{
try
{
model.LabelColor = "blue";
var result = await repo.AddCalendarEntry(model);
if(result == null)
{
return new ObjectResult("Cannot Do It!")
{
StatusCode = HttpStatusCode.NoContent
};
}
return apiResult.Send200(result);
}
catch (Exception ex)
{
return apiResult.Send400(ex.Message);
}
}
uj5u.com熱心網友回復:
回傳 NoContext 回應時不能回傳任何值。這是我看到的將您的訊息添加到回應標頭的唯一方法。這段代碼是用VS測驗的
....
if(response.StatusCode == HttpStatusCode.NoContent)
{
var reason= response.Headers.FirstOrDefault(h=> h.Key=="Reason");
if(reason!=null)
await helperService.InvokeAlert("Bad Request", $@"{reason.Value}", true);
}
.....
行動
HttpPost]
public async Task<ActionResult> UpdateCalendarEntry(CalendarEntry model)
{
.....
if(result == null)
{
HttpContext.Response.Headers.Add("Reason", "Cannot Do It!");
return NoContent();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/328459.html
標籤:C# asp.net核心 blazor-webassembly
