我有一个使用无文件激活的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”。
答案 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绑定解决了我的问题。没有任何文件配置。
(抱歉法语截图 )
将以下内容添加到配置文件并删除IIS中的http绑定也解决了我的问题。
<protocolMapping>
<add scheme="https" binding="basicHttpBinding"/>
</protocolMapping>
答案 2 :(得分:-1)
我在工作中遇到了同样的问题,这是一个权限问题。