我正在尝试将我的数据库应用程序从 .NET Core 3.1 移植到 .NET Core 5.0。
运行以下代码时,
public async Task<List<T>> LoadDataFromSQL<T, U>(string sql, U parameters, string connectionStringName)
{
using (IDbConnection connection = new OracleConnection(await GetConnectionString()))
{
var rows = await connection.QueryAsync<T>(sql,
parameters,
commandType: CommandType.Text);
return rows.ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
"System.Reflection.TargetInvocationException: 调用目标抛出异常。\r\n ---> System.TypeInitializationException: 'OracleInternal.ServiceObjects.OracleConnectionImpl' 的类型初始值设定项抛出异常。\r\n - --> System.TypeInitializationException: 'Oracle.ManagedDataAccess.Types.TimeStamp' 的类型初始值设定项引发异常。\r\n ---> System.NotSupportedException: BinaryFormatter 序列化和反序列化在此应用程序中被禁用。请参阅https:// /aka.ms/binaryformatter 了解更多信息。\r\n 在 OracleInternal.Common.OracleTimeZone.GetInstance()\r\n 在 Oracle.ManagedDataAccess.Types.TimeStamp..cctor()\r\n --- 内部异常堆栈跟踪结束 -- -\r\n 在 Oracle.ManagedDataAccess.Types.TimeStamp.InitializelatestTZversion()\r\n 在 OracleInternal.ServiceObjects.OracleConnectionImpl..cctor()\r\n --- 内部异常堆栈跟踪结束 ---\r \n 在 OracleInternal.ServiceObjects.OracleConnectionImpl..ctor()\r\n --- 除离子堆栈跟踪之外的内部结束 ---\r\n" …
我正在构建 Blazor 服务器端数据库应用程序。
我的要求之一是用户可以在不同的选项卡中打开每个网站页面。
我发现打开 5 个选项卡后,任何新页面都被阻止呈现。如果我关闭一页,则可以呈现第 6 页。显然,这是因为浏览器一次只能支持有限数量的 SignalR 连接。我读过 Chrome 的限制是一次 6 个(虽然我只能让 5 个工作)。
Chrome 中的错误消息:
Error: Connection disconnected with error 'Error: Server returned handshake error: Handshake was canceled.'
Error: Error: Server returned handshake error: Handshake was canceled.
Uncaught (in promise) Error: Cannot send data if the connection is not in the 'Connected' State.
at e.send (blazor.server.js:1)
Run Code Online (Sandbox Code Playgroud)
这个问题有解决方案吗?或者我是否需要探索移植到 Blazor 客户端?
我找到了有关此主题的以下文章,但不确定它是否可以应用于 Blazor 应用程序: SignalR 和浏览器连接限制
这有点可怕,因为我已经构建了相当多的代码,并且不想花太多时间尝试破解解决方法。