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

von*_*dip 45 sql-server asp.net wcf

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

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

内存门检查失败,因为可用内存(43732992字节)小于总内存的5%.因此,该服务将无法用于传入请求.要解决此问题,请减少计算机上的负载或调整serviceHostingEnvironment配置元素上的minFreeMemoryPercentageToActivateService的值.

和想法?

Bra*_*s83 137

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

例如:

<configuration>
  <system.serviceModel>
    <serviceHostingEnvironment ... minFreeMemoryPercentageToActivateService="0" />
  </system.serviceModel>
</configuration>
Run Code Online (Sandbox Code Playgroud)

通过MSDN注意:"在运行服务时,在WCF服务的web.config文件中指定此属性以及部分信任将导致SecurityException."

  • 它只是起作用,因为每次触摸web.config都会重置工作进程,释放它正在使用的任何内存.你有某种内存泄漏; 摆弄web.config不会解决问题. (5认同)
  • 按照本答案的建议,将此值降低到0%是否安全?有没有一个很好的理由为什么默认是5%? (4认同)
  • @ BrianSlugs83谢谢 - 这对我来说也适用于共享托管环境. (3认同)

Dan*_*son 14

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

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