2010-05-21 36 views
43

我正在建立一个asp.net应用程序,在Windows Server 2003(vps hosting)上使用II6。 我遇到了我的开发机器上没有收到的错误(Windows 7,iis 7.5,64位)。使用wcf对sql服务器运行查询时发生奇怪的错误

当我的WCF服务试图发动我的查询针对本地的SQL服务器上运行,这是错误我收到:

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

和想法??

回答

13

您可以尝试的一件事是将您的'mex'服务路径更改为绝对路径,如果它尚未。它为我工作过一次。但这可能是由于服务重新启动并释放了一些内存。

BrainSlug的回答有如何做到这一点

119

在你的web.config,在配置\ system.serviceModel \ serviceHostingEnvironment元素的例子,添加minFreeMemoryPercentageToActivateService属性,并将其设置为东西低于5,我将我的地雷设置为0,这个错误对我来说就消失了。

例如:

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

注意通过MSDN:“指定在一个WCF服务的web.config文件将导致一个SecurityException运行服务时,部分信任沿着这个属性。”

+3

@ BrianSlugs83谢谢 - 这也适用于我在共享主机环境。 – 2012-08-30 16:44:04

+4

按照此答案中的建议,将此降至0%是否安全?为什么默认值是5%有充分的理由吗? – Matt 2013-10-15 21:11:16

+0

这是一个很好的问题,我不能说我知道答案 - 但我敢说,只要你不处于部分信任环境,我不明白为什么它不会 - - 在一次计数中,它围绕着一个奇怪的错误发挥作用 - 另一方面,如果你的服务器有0%的空闲内存,那么你已经有很多其他更糟糕的问题了。 : -/ – BrainSlugs83 2013-10-19 06:31:10

1

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