PlatformNotSupportedException:此平台不支持安全二进制序列化

时间:2020-07-29 15:00:29

标签: c# asp.net odata core webapi

尝试在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();
                }
           }
 }

1 个答案:

答案 0 :(得分:0)

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

之外,我在发行说明中找不到任何直接证据表明这种变化

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

请为与此相同的潜在问题的Git Hub issue #1833作贡献。