我有一个 .NET Core MVC 应用程序 (C#),它使用 C++ 库 (SWIG)。在 C# 中,我需要创建其中一个类的实例,预设其回调并在服务器运行时保持其活动状态。使用此回调我从 C++ 获取数据。我尝试将对象存储在会话中,但我只能在那里存储值:
HttpContext.Session.Set(key, value);
Run Code Online (Sandbox Code Playgroud)
还尝试在 上定义它Startup,但该对象在初始化后被释放。在这种情况下最好的解决方案是什么?
注意:在回调函数中,我使用 SignalR 发布数据。
我的 SignalR 库有问题。当我广播大量数据时,SignalR 的缓冲区开始堆积并分配尽可能多的可用内存,最终导致应用程序崩溃,原因是:
内存不足
在 .NET Framework 中,这可以通过设置 来解决GlobalHost.Configuration.DefaultMessageBufferSize,但我找不到它的 .NET Core 设置。
感谢这篇文章,我设法配置了我的Transport选项:
app.UseSignalR(routes =>
{
routes.MapHub<MonitoringHub>("/MonitoringHub", options => {
options.TransportMaxBufferSize = 256000;
options.ApplicationMaxBufferSize = 256000;
options.Transports = TransportType.All;
options.WebSockets.CloseTimeout = TimeSpan.FromSeconds(10);
options.LongPolling.PollTimeout = TimeSpan.FromSeconds(10);
});
});
Run Code Online (Sandbox Code Playgroud)
此外,我设置了 SignalR 选项:
services.AddSignalR(options => {
options.EnableDetailedErrors = true;
});
Run Code Online (Sandbox Code Playgroud)
但是如何设置DefaultMessageBufferSize?
我正在使用DocumentFormat.OpenXml.Wordprocessing在 Word 文档中添加表格。我需要的是删除表格最后 3(/N) 行中前 4(/6) 个单元格的边框。这些行的添加方式如下:
t.Append(new TableRow(
new TableCell(new Paragraph(new Run(new Text()))),
new TableCell(new Paragraph(new Run(new Text()))),
new TableCell(new Paragraph(new Run(new Text()))),
new TableCell(new Paragraph(new Run(new Text()))),
new TableCell(new Paragraph(new Run(new Text("Total:")))),
new TableCell(new Paragraph(new Run(new Text(priceTotal.ToString()))))
));
Run Code Online (Sandbox Code Playgroud)
我该如何设置TableCellBorders?我尝试过一些事情,例如:
TableCell cell = new TableCell();
cell.TableCellProperties.TableCellBorders.LeftBorder.Size.Value = 0;
cell.TableCellProperties.TableCellBorders.RightBorder.Size.Value = 0;
cell.TableCellProperties.TableCellBorders.TopBorder.Size.Value = 0;
cell.TableCellProperties.TableCellBorders.BottomBorder.Size.Value = 0;
Run Code Online (Sandbox Code Playgroud)
然而,我尝试过的一切都会回归System.NullReferenceException。删除单元格边框的正确方法是什么?