PlatformNotSupportedException:此平台不支持安全二进制序列化
Posted
技术标签:
【中文标题】PlatformNotSupportedException:此平台不支持安全二进制序列化【英文标题】:PlatformNotSupportedException: Secure binary serialization is not supported on this platform 【发布时间】: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 并得到相同的错误。
错误: 处理请求时发生未处理的异常。 。 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 以解决此问题,但尚未发布答案,因为我尚未研究原因,我只需要我的生产环境即可工作。 【参考方案1】:看起来最近在 OData Client for v7.7.0 中的工作已经改变了错误响应的处理方式以及异常的反序列化方式,我什至建议这是一个错误。除了this issue with deserializing exceptions
,我在发行说明中找不到任何直接证据表明此更改将 OData 客户端降级到 v7.6.4 通常可以解决此问题。
请为这个Git Hub issue #1833 提供意见,这是相同的根本问题。
【讨论】:
以上是关于PlatformNotSupportedException:此平台不支持安全二进制序列化的主要内容,如果未能解决你的问题,请参考以下文章