.net 8 中是否有 FailureResult.FailureResult(Sytem.Net.HttpStatusCode statusCode, IServiceError serviceError) 的良好替代品?

问题描述 投票:0回答:1

在从 .net Framework 4.8 升级到 .net 8 期间,我正在致力于从 IhttpActionResult 到 IActionResult 的过渡,并且我

protected IActionResult InvalidParameter(string parameterName)
{
    var error = CommonServiceError.InvalidParameters.InvalidParameter(parameterName);
    return new FailureResult(serviceResultHandler.Resolve(error.ErrorCode), error);
}

将方法类型更改为 IActionResult 后,FailureResult 收到错误: 无法将类型“P1S.Common.WebApi.ActionResults.FailureResult”隐式转换为“Microsoft.AspNetCore.Mvc.IActionResult”。存在显式转换(您是否缺少转换?)SesisServer.WebApi

这是有道理的。但我正在寻找解决方法。由于这是库的一部分,我无法编辑它以使其工作,对吗?

有什么方法可以代替它来做同样的事情吗?

如有任何建议,我们将不胜感激。谢谢你。

也供参考,这是 FailureResult 方法:

#nullable enable
namespace P1S.Common.WebApi.ActionResults
{
  public class FailureResult : IActionResult
  {
    public HttpStatusCode StatusCode { get; }

    public IServiceError ServiceError { get; }

    public FailureResult(HttpStatusCode statusCode, IServiceError serviceError)
    {
      this.StatusCode = statusCode;
      this.ServiceError = serviceError;
    }

    public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
    {
      return Task.FromResult<HttpResponseMessage>(this.Execute());
    }

    public HttpResponseMessage Execute()
    {
      HttpContext.Current.Items[(object) "ServiceError"] = (object) this;
      FailureResponse failureResponse = this.ServiceError.ToFailureResponse();
      return new HttpResponseMessage(this.StatusCode)
      {
        Content = (HttpContent) new ObjectContent<FailureResponse>(failureResponse, (MediaTypeFormatter) new JsonMediaTypeFormatter())
      };
    }
  }
}

我什至从 IhttpActionResult 中删除了 http,但我不确定这是否会起作用,因为它是库中的方法。

再次感谢!

.net-8.0 actionresult system.web
1个回答
0
投票

所以这里的大局是.net core 中有一个 P1S.Common.WebApi 的替代库。

您可以在 nuget 包管理器中将该包替换为 P1S.Common.Core.WebApi,在升级框架时它是一个超级好的替代品。这解决了我原来的问题。

© www.soinside.com 2019 - 2024. All rights reserved.