NotSupportedException: сериализация и десериализация экземпляров System.Reflection.MethodBase не поддерживаются.C#

Место общения программистов C#
Ответить
Anonymous
 NotSupportedException: сериализация и десериализация экземпляров System.Reflection.MethodBase не поддерживаются.

Сообщение Anonymous »

Поэтому я попытался выполнить рефакторинг кода, чтобы вернуть ответы в более чистом виде. Но я, кажется, не могу понять, почему, когда я пытаюсь поместить errorResponse в ResponseBody, он возвращает неподдерживаемое исключение. Может кто-нибудь объяснить?
public class ResponseBodyBase
{
public string LogId { get; set; }
public ErrorResponseBody Error { get; set; }
}

public class ResponseBody : ResponseBodyBase
{
public string ItemId { get; set; }
public string ListId { get; set; }
public string SiteId { get; set; }
public bool? ToDropOffLocation { get; set; }
}

public class ResponseDebugBody : ResponseBody
{
public object Variables { get; set; }
}

public static ResponseBody CreateResponse(HttpRequest req, string logId, DocumentVariables documentVariables, ErrorResponseBody errorResponse)
{
// Determine if debug information is requested
bool isDebugMode = req.Headers.TryGetValue("debug", out var debugHeader) && !string.IsNullOrEmpty(debugHeader);

var standardResponse = new ResponseBody
{
LogId = logId,
ItemId = documentVariables.ListItemId,
ListId = documentVariables.ListId,
SiteId = documentVariables.SiteId,
Error = // null works, but if I put anything related to errorResponse here it goes wrong
};

// If in debug mode, add additional debug information
if (isDebugMode)
{
return CreateDebugResponse(baseResponse, documentVariables);
}

return baseResponse;
}

private static ResponseDebugBody CreateDebugResponse(ResponseBody baseResponse, DocumentVariables documentVariables)
{
return new ResponseDebugBody
{
LogId = baseResponse.LogId,
ItemId = baseResponse.ItemId,
ListId = baseResponse.ListId,
SiteId = baseResponse.SiteId,
Variables = new
{
// excess variables
},
ToDropOffLocation = false
};
}

И я возвращаю ответ следующим образом:
ErrorResponseBody errorResponse = new ErrorResponseBody
{
Timestamp = DateUtils.CreateTimeStamp(),
Status = 422,
Code = "Can't process entity",
Message = e.Message,
LogId = logId,
InnerError = e
};

var response = ResponseBody.CreateResponse(req, logId, documentVariables, errorResponse); // this goes fine

return new OkObjectResult(response) // returning this throws exception
{
StatusCode = errorResponse.Status,
ContentTypes = { "application/json" }
};


Подробнее здесь: https://stackoverflow.com/questions/791 ... flection-m
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»