使用 wcf 对 sql server 运行查询时出现奇怪的错误

Posted

技术标签:

【中文标题】使用 wcf 对 sql server 运行查询时出现奇怪的错误【英文标题】:Strange error occurring when using wcf to run query against sql server 【发布时间】:2011-02-22 05:59:21 【问题描述】:

我正在构建一个 asp.net 应用程序,在 windows server 2003(vps 托管)上使用 II6。 我遇到了在我的开发机器(Windows 7、iis 7.5、64 位)上没有收到的错误。

当我的 wcf 服务尝试启动针对本地 sql 服务器运行的查询时,这是我收到的错误:

内存门检查失败,因为 可用内存(43732992 字节)是 不到总内存的 5%。作为一个 结果,服务不会 可用于传入请求。到 解决这个问题,要么减少负载 在机器上或调整值 minFreeMemoryPercentageToActivateService 关于服务HostingEnvironment 配置元素。

和想法??

【问题讨论】:

【参考方案1】:

在您的 web.config 中,在您的 configuration\system.serviceModel\serviceHostingEnvironment 元素中,添加一个 minFreeMemoryPercentageToActivateService 属性,并将其设置为低于 5 的值,我将我的设置为 0,这个错误对我来说消失了。

例如:

<configuration>
  <system.serviceModel>
    <serviceHostingEnvironment ... minFreeMemoryPercentageToActivateService="0" />
  </system.serviceModel>
</configuration>

MSDN 的警告:“指定此属性以及对 WCF 服务的 web.config 文件的部分信任将在服务运行时导致 SecurityException。”

【讨论】:

@BrianSlugs83 谢谢 - 这在共享托管环境中也适用于我。 按照此答案的建议将其降低到 0% 是否安全?默认值为 5% 有充分的理由吗? 10 分钟后...我将 web.config 恢复到原来的状态(即没有“minFreeMemoryPercentageToActivateService”设置),现在,神奇地,它又开始工作了。荒谬的。远离 GoDaddy... 它之所以有效,是因为每次您触摸 web.config 时都会重置您的工作进程,释放它正在使用的所有内存。你有某种内存泄漏;摆弄 web.config 并不能解决问题。 这个答案救了我,应该是被接受的答案。【参考方案2】:

您可以尝试的一件事是将您的“mex”服务路径更改为绝对路径(如果还没有的话)。它曾经对我有用。但这可能是由于服务重新启动并释放了一些内存。

BrainSlug 的答案有一个如何做到这一点的示例

【讨论】:

【参考方案3】:

我在本地 (localhost) 运行 WCF 服务时遇到了这个问题。我停止了服务。关闭了几个应用程序来清理我的内存。并再次重新启动它。它像以前一样正常启动。 BrainSlug 的答案也有效。为此+1。 :) 干杯!!

【讨论】:

以上是关于使用 wcf 对 sql server 运行查询时出现奇怪的错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sql Server 上设置安全性以允许 WCF 服务访问?

使用 Windows 身份验证的 IIS 托管 WCF 服务和 SQL 查询

如何对通过 MS JDBC 驱动程序运行的 MS SQL Server 查询强制执行查询超时?

使用 Windows 服务和 SQL Server 在 OneWay WCF 消息中排队

WCF / EF / SQL Server / VS2017 / C#:多层应用程序在部署到本地 IIS 10.0 作为托管服务器时出错

查询在 SQL Server 上运行,但不使用 PHP