我正在从事一个集成项目。将实体插入 mongodb 时出现错误。
错误消息返回以下字符串:
MongoDB.Bson.BsonSerializationException:“序列化类 Order 的 OrderData 属性时发生错误:类型 MarketplaceOrder 未配置为此 ObjectSerializer 实例的允许类型。'
之前几步,我从任何 api 资源获取数据并将数据转换为我的通用对象,<T>
如下行所示。
var data = (JArray)returnDataFromNetwork.Data;
var order = data.ToObject<T>()
Run Code Online (Sandbox Code Playgroud)
将实体插入 mongodb 时出现错误
_orderRepository.InsertAsync(new Order
{
OrderData = order,
});
Run Code Online (Sandbox Code Playgroud)
public class Order
{
public object OrderData { get; set; }
}
public class MarketplaceOrder
{
[JsonProperty("marketplace")]
public string Marketplace { get; set; }
[JsonProperty("account_id")]
public int AccountId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
感谢您的支持,
我试图解释的所有事情都是关于“hangfire”(后台服务)项目的。首先,我在服务器控制台上收到此错误消息。然后我尝试在本地调试以了解问题所在。我无法理解错误消息的详细信息。
我有一个示例,该示例如何配置authorization
我自己的Azure
active directory
租户的易于登录的用户。我仅对此代码做了一个更改,我已通过AuthorizeAttribute的实现标记了HomeController,因为没有身份验证/授权的用户无法进入我的页面。
[Authorize(Roles = "Admin")]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
所述authorization
配置步骤如下。
private static string clientId = ConfigurationManager.AppSettings["ida:ClientId"];
private static string aadInstance = ConfigurationManager.AppSettings["ida:AADInstance"];
private static string tenant = ConfigurationManager.AppSettings["ida:Tenant"];
private static string postLogoutRedirectUri = ConfigurationManager.AppSettings["ida:PostLogoutRedirectUri"];
string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant);
public void ConfigureAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
ClientId = clientId,
Authority = authority,
PostLogoutRedirectUri …
Run Code Online (Sandbox Code Playgroud) 我Azure
App Insight
用作日志记录工具并通过以下代码存储日志数据:
private void SendTrace(LoggingEvent loggingEvent)
{
loggingEvent.GetProperties();
string message = "TestMessage";
var trace = new TraceTelemetry(message)
{
SeverityLevel = SeverityLevel.Information
};
trace.Properties.Add("TetstKey", "TestValue");
var telemetryClient = new TelemetryClient();
telemetryClient.Context.InstrumentationKey = this.InstrumentationKey;
telemetryClient.Track(trace);
}
Run Code Online (Sandbox Code Playgroud)
一切正常。我看到登录记录App insight
以及App insight analytics
(在trace
表中)。我的自定义属性写在特殊的应用洞察行部分 - customDimensions
. 例如,上面的代码将添加具有“TestKey”键和“ TestValue”值的新属性到customDimensions
部分。
但是当我尝试写一些大文本(例如JSON
超过 15k 个字母的文档)时,我仍然可以毫无例外地做到这一点,但可写的文本将在一些文档长度后被切断。结果,部分中的自定义属性值customDimensions
也将被裁剪,并且只有文档的第一部分。据我了解,允许在应用洞察自定义属性中写入最大文本长度有限制。
有人可以知道我该如何解决这个问题吗?