无文件WCF激活导致“零应用程序(非基础架构)端点...”异常

时间:2011-03-01 16:53:53

标签: wcf iis-7 .net-4.0

我有一个使用无文件激活的WCF服务:

  <bindings>
     <basicHttpBinding>
        <binding transferMode="Streamed">
           <security mode="Transport"/>
        </binding>
     </basicHttpBinding>
  </bindings>

  <serviceHostingEnvironment multipleSiteBindingsEnabled="true">
     <serviceActivations>
        <add relativeAddress="RulesService.svc"
             service="Big.Company.RulesService.Service, RulesService" />
     </serviceActivations>
  </serviceHostingEnvironment>

在某些机器上,我看到以下异常:

  

服务   'Big.Company.RulesService.Service'有   零应用(非基础设施)   端点。这可能是因为没有   找到了您的配置文件   申请,或因为没有服务   与服务名称匹配的元素   可以在配置中找到   文件,或因为没有端点   在服务元素中定义。

据我所知,.svc已正确映射到.NET 4.0激活模块。该应用程序位于使用集成管道为.NET v4.0配置的“ASP.NET v4.0”应用程序池中。

如果我删除了Web.config文件,则会收到404错误。如果我重命名bin \ RulesService.dll文件,我会收到“找不到服务”的异常。

它出了什么问题?

更新:打开SSL时似乎有问题。如果我使用HTTPS连接,没关系,,直到我在IIS中启用“需要SSL”

3 个答案:

答案 0 :(得分:4)

使用Reflector的一个下午引导我进入ConfigLoader.AddDefaultEndpoints方法,该方法查看配置文件的ProtocolMappingSection以确定要添加的默认端点。

似乎HTTPS并未隐式设置此部分。

我通过将以下内容添加到我的Web.config文件中解决了它(来自something I'd seen earlier in the day的提示):

<protocolMapping>
   <add scheme="https" binding="basicHttpBinding"/>
   <add scheme="http" binding="basicHttpBinding"/>
</protocolMapping>

答案 1 :(得分:0)

我的IIS中只有一个HTTPS绑定用于我的服务,添加一个http绑定解决了我的问题。没有任何文件配置。

Add Http binding

(抱歉法语截图 )

将以下内容添加到配置文件并删除IIS中的http绑定也解决了我的问题。

<protocolMapping>
   <add scheme="https" binding="basicHttpBinding"/>
</protocolMapping>

答案 2 :(得分:-1)

我在工作中遇到了同样的问题,这是一个权限问题。