【问题标题】:PlatformNotSupportedException: Secure binary serialization is not supported on this platformPlatformNotSupportedException:此平台不支持安全二进制序列化
【发布时间】:2020-07-29 15:00:29
【问题描述】:

尝试在 WebApi 和 Microsoft.Odata.Client 7.7.0 上实现从 WebApi 2.0 到 .Net Core 3.1 和 Microsoft.AspnetCore.Odata 7.4.1 的自定义授权属性转换。

我从 .NET 4.8 中的有效 OData – API 修改了这段代码,一切正常,直到我们将自定义授权属性应用于端点。

从 Odata 控制器上使用的自定义授权属性返回 UnauthorizedResult 时,客户端出现以下错误。还尝试从 AuthorizeAttribute 继承而不是 Attribute,IAuthorizationFilter 并得到相同的错误。

错误: 处理请求时发生未处理的异常。 PlatformNotSupportedException:此平台不支持安全二进制序列化。 System.Exception.add_SerializeObjectState(EventHandler 值)

[CustomAuthorization]
[ODataRoutePrefix("Data")]
public class DataController: ODataController
{
}



[AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = false)]
public class CustomAuthorizationAttribute : Attribute, IAuthorizationFilter
{
   public void OnAuthorization(AuthorizationFilterContext filterContext)
          {
             if (!ValidToken(filterContext, sUserToken))
               {         
                  filterContext.HttpContext.Response.Headers.Add("AuthorizationStatus","NotAuthorized");
                  filterContext.Result = new UnauthorizedResult();
                }
           }
 }

【问题讨论】:

  • 我将 OData 客户端回滚到 7.6.4 以解决此问题,但尚未发布答案,因为我尚未研究原因,我只需要我的生产环境即可工作。

标签: c# asp.net-core odata webapi


【解决方案1】:

看起来最近在 OData Client for v7.7.0 中的工作已经改变了错误响应的处理方式以及异常的反序列化方式,我什至建议这是一个错误。除了this issue with deserializing exceptions

,我在发行说明中找不到任何直接证据表明此更改

将 OData 客户端降级到 v7.6.4 通常可以解决此问题。

请为这个Git Hub issue #1833 提供意见,这是相同的根本问题。

【讨论】:

    猜你喜欢
    • 2019-04-12
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 2018-08-27
    • 1970-01-01
    • 2016-05-20
    • 2019-12-29
    相关资源
    最近更新 更多