小编DKh*_*naf的帖子

.NET核心实体框架存储过程

我正在尝试将ASP.NET 4.5应用程序移植到.NET Core,我有一个我似乎无法弄清楚的真正问题.

我现有的应用程序执行存储过程,返回带有多个数据表的数据集.实体框架可以自动将返回的字段映射到我的实体属性,但只能与数据集中的第一个数据表一起使用(自然).

所以我只想弄清楚它是否可能以某种方式拦截模型构建过程并使用自定义代码来处理数据集并查看其他数据表来设置实体字段.

我知道我可以直接使用正常的方式执行存储过程,SqlConnection但我想知道实体框架是否有某种方法可以做到这一点.

c# stored-procedures entity-framework-core asp.net-core

5
推荐指数
1
解决办法
6612
查看次数

.NET Core 2.1基于.NET套接字和Span <T>的新HttpClient。似乎有问题

我有一个奇怪的问题,我正在尝试与.NET Core 2.1上的新HttpClient有关。从这里的这篇文章(https://blogs.msdn.microsoft.com/dotnet/2018/04/11/announcing-net-core-2-1-preview-2/)我知道HttpClient已经完全重新编写为使用其他低级库来处理HTTP请求。我想知道是否有人看到新实施的任何问题。

我看到的是一个奇怪的情况,我的应用程序(.NET Core 2.1)每隔15分钟几次(每10秒一次)向某个API发送POST请求几次,它将抛出一个异常并显示以下错误: An error occurred while sending the request.; The server returned an invalid or unrecognized response.

没有其他详细信息可用,这是我拨打电话时的一个例外:

using (var res = await _httpClient.PostAsync(uriBuilder.Uri, new StringContent(serializedRequestBody, Encoding.UTF8, "application/json")))
            {
               //Do something here
            }
Run Code Online (Sandbox Code Playgroud)

捕获的异常是System.Net.Http.HttpRequestException,它具有上述错误消息的某些内部异常。

因此,正如我提到的那样,这并非一直发生,它似乎是随机发生的,或者至少我无法辨别任何特定的模式。我只能说这些POST请求每10秒24/7发出一次,并且5%到10%之间的POST请求都会失败,但以上情况除外。

因此,使用了tcdump并将其通过管道传送到wireshark中以检查请求,以查看请求失败时实际发生的情况,而我看到的是以下内容:

在一个好的POST上,我看到:我的应用程序将请求发送到服务器,服务器将响应发送回,我的应用程序将ACK发送到服务器,服务器使用FIN,ACK进行响应。做完了 好东西。

在发生上述异常的POST上,我看到以下内容:我的应用程序将请求发送到服务器,并且几乎在我的应用程序将FIN,ACK发送到服务器之后(如几毫秒后)。

这似乎与我在应用程序日志中看到的一致,该日志表明在引发异常之前,请求持续时间为0。

所以对我来说,我的应用程序发送请求,然后由于某种原因立即关闭连接。但是,我不明白为什么会这样。我尝试比较原始HTTP请求(好的POST与不好的POST)以查看任何差异,但看不到任何差异。

最后要提到的一件事是,我只能在.NET Core 2.1上运行的应用程序中看到这一点。当我在.NET 2.0上运行我的应用程序时,没有看到此问题。同样,当我在.NET 4.5.1应用程序中使用相同的库(正在进行HTTP调用)(我使用多目标编译针对.net标准和net451的库)时,我也没有看到此问题。因此,它似乎仅影响.NET Core 2.1

关于我可以从这里去哪里的任何想法?我还有其他需要寻找的东西吗?有人将如何尝试对这类问题进行分类?

在此处输入图片说明

[编辑]我添加了wireshark输出的屏幕快照,该屏幕快照显示了服务器在客户端发送FIN,ACK之前从未响应的最后一个POST请求

[编辑] @Svek在注释中指出了有关ACK序列的内容。我认为这里可能有问题,因为(在屏幕截图中)在最后一个POST之后有一个FIN,ACK,它显示Ack = 7187,所以回头看一看,以前的FIN,ACK的序列为7186。现在,到目前为止,我对TCP或网络并不抱有任何期望,所以我可能会说完全愚蠢的话,但这是否意味着最后一个FIN,ACK(来自主机到服务器)本质上就是我的主机FIN,ACK'ing以前的FIN,ACK(从服务器到我的主机),并基本上关闭了连接。

因此,由于下一次POST使用相同的连接进行到相同的host:port,但是该连接已关闭(通过最后一个FIN,ACK),这就是为什么我永远都回不到响应的原因?

c# http .net-core

5
推荐指数
0
解决办法
417
查看次数

Tomcat Web应用程序中的单例和类加载器

我一直在网上做很多研究,但似乎无法找到我的问题的确切答案,这就是为什么我转向本网站的专家.

使用java和Tomcat进行开发时,我有一个处理数据库连接的Singleton类.所以问题是当不同的用户连接到我的Web应用程序时,我的服务器端java代码执行它是否有自己的单例类?

例如:
用户A登录到我的站点.创建了我的单例实例.
用户B登录到我的站点,在两次执行java代码之间是否存在相同的对象(单例)?或者是用户A和用户B的每次执行获得不同的单身人士?

谢谢.

java mysql tomcat classloader

3
推荐指数
1
解决办法
1430
查看次数