27

我正在使用 WCF,它在 localhost 上运行良好。在我把它放在生产服务器上之后,它抛出了一个异常

无法激活请求的服务“ http://global-kazway.kz/Service1.svc ”。有关详细信息,请参阅服务器的诊断跟踪日志

我是服务的新手,已经尝试解决这个问题将近 3 个小时。

这是App.config客户的;

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections></configSections>
  <connectionStrings>
    <add name="TestProject.Properties.Settings.DBConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\1\Documents\visual studio 2010\Projects\TestProject\TestProject\AppData\DB.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /><add name="DBEntities" connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=C:\Users\1\Documents\visual studio 2010\Projects\TestProject\TestProject\AppData\DB.mdf;integrated security=True;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /><add name="DBEntities1" connectionString="metadata=res://*/DBModel.csdl|res://*/DBModel.ssdl|res://*/DBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.\SQLEXPRESS;attachdbfilename=|DataDirectory|\AppData\DB.mdf;integrated security=True;user instance=True;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /></connectionStrings>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IService1" closeTimeout="00:01:00"
          openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
          allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
          maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
          messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
          useDefaultWebProxy="true">
          <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
          <security mode="None">
            <transport clientCredentialType="None" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://global-kazway.kz/Service1.svc" binding="basicHttpBinding"
        bindingConfiguration="BasicHttpBinding_IService1" contract="kazwayServiceReference.IService1"
        name="BasicHttpBinding_IService1" />
    </client>
  </system.serviceModel>
</configuration>
4

7 回答 7

73

对 WCF 应用程序进行故障排除的第一步是打开浏览器并输入服务 URI。因此,基于客户端:您将导航到http://global-kazway.kz/Service1.svc

现在看看你得到什么样的结果。例外?服务画面?通常你可以从这个屏幕上得到你最好的信息!有时它会指出您的问题是什么,例如缺少行为。

将您的 web.config 与部署的 web.config 条目进行比较。你也可以在那里找到一些东西。最后,您可能只需要管理文件夹的安全性。但是浏览器显示可以非常清楚地为您拼出所有内容。

于 2012-06-05T18:25:18.687 回答
8

我正在做一个项目,我遇到了同样的问题。当我检查事件查看器以跟踪错误时,我发现了问题所在。

事件查看器消息:

Sender Information: System.ServiceModel.ServiceHostingEnvironment+HostingManager/7540993
 Exception: System.ServiceModel.ServiceActivationException: The service '/CODWebService/Service1.svc' cannot be activated due to an exception during compilation.  The exception message is: Memory gates checking failed because the free memory (164065280 bytes) is less than 5% of total memory.  As a result, the service will not be available for incoming requests.  To resolve this, either reduce the load on the machine or adjust the value of minFreeMemoryPercentageToActivateService on the serviceHostingEnvironment config element.. ---> System.InsufficientMemoryException: Memory gates checking failed because the free memory (164065280 bytes) is less than 5% of total memory.  As a result, the service will not be available for incoming requests.  To resolve this, either reduce the load on the machine or adjust the value of minFreeMemoryPercentageToActivateService on the serviceHostingEnvironment config element.

然后我将以下代码添加到我的服务的 web.config 文件中。

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" minFreeMemoryPercentageToActivateService="1" />

这个元素应该放在<system.serviceModel>

于 2014-05-16T20:17:13.157 回答
6

我在 WCF 上工作,它在 localhost 上运行良好。在我将它放到生产服务器后,它给我一个异常“请求的服务,'http://global-kazway.kz/Service1.svc' 不能已激活。有关详细信息,请参阅服务器的诊断跟踪日志

这篇 MSDN 文章介绍了如何在服务器上配置跟踪。完成后,您可以查看服务器的诊断跟踪日志,并且很可能会发现问题。

于 2012-06-05T18:29:53.407 回答
2

要更详细地描述错误,请将此代码插入服务的 web.config 文件中:-

  <serviceBehaviors>
    <behavior name="MyServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>

然后在您的服务中使用此服务行为,如下所示:-

<service name="MyService" behaviorConfiguration="MyServiceBehavior" >
        <endpoint address="" binding="basicHttpBinding"  xxxx="" xxxxx="" xxxxx="" xxxx="" xxxx="" />
        <endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
        <host>
          <baseAddresses>
            <add baseAddress="http://ServerAddress:AnyPortIfspecified/VirtualDirname"/>
          </baseAddresses>
        </host>
      </service>

这将为您提供错误的详细说明。

您可以尝试的第二件事是检查:-

<host>
        <baseAddresses>
          <add baseAddress="http://ServerAddress:AnyPortIf specified/VirtualDir name"/>
        </baseAddresses>
      </host>

确保您的基地址不是本地主机。TC

于 2012-06-07T08:33:56.603 回答
2

我能够通过使用 Visual Studio 2013 执行以下步骤来解决此问题:

  1. 转到您拥有 *.svc 文件的项目文件夹
  2. 右键单击 *.svc 文件 -->在浏览器中查看
  3. 验证您是否能够浏览服务

在此处输入图像描述

  1. 转到您拥有 app.config 文件或要使用该服务的项目文件夹。
  2. 右键项目-->添加-->服务参考
  3. 单击发现-->在服务下选择服务-->为您的服务引用提供所需的名称-->单击确定
  4. 它将在“Service References”文件夹下创建“ServiceReference1”并自动创建/更新 app.config 文件

在此处输入图像描述

于 2016-04-07T21:42:29.880 回答
2

首先获取服务 url 地址(例如http://youservice:808/Area.Service/Service.svc)并将其放入浏览器 url 字段以检查服务是否正在运行。

就我而言,它没有运行。

远程服务器运行了一个使用大量 CPU 和 RAM 的进程(sql 进程)

这阻止了服务。

通过关闭/停止远程服务器上任务管理器中的某些进程恢复了服务。

于 2017-04-24T10:06:33.237 回答
0

除了接受的答案之外,我还访问了Service.svc映射中 URL 的确切 URL。

从那里你可以看到详细的问题,在我的情况下,这是错误:

在此处输入图像描述

查看问题,我的 web.config 文件有正确的配置,但我注意到它正在寻找程序集,从那里,我发现我没有引用服务合同项目,包括服务实施和数据访问层组装。

于 2020-05-12T15:44:20.207 回答