1

在开发一个相对简单的 Web 服务时,它获取帖子提供的数据并将其记录在数据库表中,我们收到此错误:

异常捕获:远程服务器返回错误:(500) Internal Server Er or。堆栈跟踪:在 System.Net.HttpWebRequest.GetResponse()

在某些服务器上,但在其他服务器上没有。得到这个的是物理机,其他的是虚拟机,显然物理服务器要强大得多。

据我们所知,问题在于每次查询后数据库连接都没有释放回池中。我正在使用下面的使用模式:

                using (VoteDaoDataContext dao = new VoteDaoDataContext())
                {

                    dao.insert_response_and_update_count(answerVal, swid, agent, geo, DateTime.Now, ip);
                    dao.SubmitChanges();
                    msg += "Thank you for your vote.";
                    dao.Dispose();
                }

我添加了 dao.Dispose() 调用以确保在方法完成时释放连接,但我不知道是否有必要。

我是否正确使用了这种模式?我还需要做些什么来确保连接正确返回到池中吗?

谢谢!

4

2 回答 2

3

您的诊断信息不够好。HTTP/500 的详细信息不足以真正判断您的理论是否正确。如果您想解决问题,您将需要在日志记录中捕获完整的堆栈跟踪。我想你已经在这里得出了一个结论。不,您不需要 Dispose() 在 using{} 块结束之前。这就是 using{} 的作用

于 2009-01-08T23:09:21.290 回答
0

我认为 dispose() 调用是多余的,但我想确定一下。

我们看到 SQL 日志中的连接池已饱和(我无法直接查看,我只是一名开发人员,而且这些东西在 prod 环境中运行),我的操作人员说他看到连接超时。 ..一旦超时,服务器就会再次开始运行,直到下一次它使连接池饱和。

我们正在经历调整连接池设置的过程......我想确定我没有做错任何事情,因为这是我第一次使用 Linq。

谢谢!

于 2009-01-09T00:54:31.997 回答