Getting 404 no endpoint listening error WCF 4.0 using Https
本文关键字:using Https WCF error no endpoint listening Getting | 更新日期: 2023-09-27 18:29:01
我正在尝试为IIS 7.5中托管的wcf web服务启用https安全性。我已经浏览了我能在网上找到的关于这方面的每一篇文章,并尝试了我能找到的几乎每一种配置或IIS技巧或变体。我认为这可能是IIS、windows级别的配置问题。我们使用的是像*.mycompany.com这样的通配符SSL证书。如果有任何影响的话,该证书正在同一IIS中的其他3个站点上使用。有人知道我在这里遇到了什么吗???这是一个公共服务器,非TEST和http绑定工作正常。我在开发服务器和生产服务器上也遇到了同样的https问题。我们在这个生产箱上有另一个https网站,它发送和接收数据都很好。我收到异常:
没有在侦听的终结点https://subdomain.mydomain.com/MyService.svc可以接受消息这通常是由不正确的地址或SOAP操作引起的。
内部异常:
远程服务器返回错误:(404)找不到。
这是我的web.config
:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appSettings file="LocalAppSettings.config">
<!--<add key="CustomIISServiceHostEndPoint" value="https://subdomain.mydomain.com/MyService.svc" />-->
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<customErrors mode="Off" />
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="COLWebServiceBinding" maxReceivedMessageSize="134217727" sendTimeout="00:03:00" receiveTimeout="00:03:00">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
<readerQuotas maxArrayLength="65536" maxBytesPerRead="65536" maxStringContentLength="134217727" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="COLWebService.ServiceBehavior" name="COLWebService">
<endpoint address="https://subdomain.mydomain.com/MyService.svc"
binding="basicHttpBinding"
contract="MyCompany.COLWebService.ICOLWebService"
bindingConfiguration="COLWebServiceBinding" />
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
</service>
</services>
<extensions>
<behaviorExtensions>
<add name="errorHandler" type="MyCompany.COLWebService.ErrorHandlerBehaviorExtensionElement, MyCompany.COLWebService" />
</behaviorExtensions>
</extensions>
<behaviors>
<serviceBehaviors>
<behavior name="COLWebService.ServiceBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<!--<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>-->
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="false">
</serviceHostingEnvironment>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
</configuration>
这是我客户的app.config
:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="wsHttpBinding_ICOLWebService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:03:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="134217727"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true">
<readerQuotas maxStringContentLength="134217727" maxArrayLength="65536"
maxBytesPerRead="65536" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://subdomain.mydomain.com/MyService.svc"
binding="basicHttpBinding" bindingConfiguration="wsHttpBinding_ICOLWebService"
contract="COLWebService.ICOLWebService" name="wsHttpBinding_ICOLWebServiceEP" />
</client>
</system.serviceModel>
</configuration>
您可以通过修改system32''''inetsrv中的applicationhost.config文件,手动将主机头值添加到SSL证书中。查找IIS实例的部分。
打开.svc文件-我猜它没有引用COLWebService作为服务。
您的配置文件有:
name="COLWebService"
在服务声明中。这需要匹配。SVC的命名服务,看看你给出的url,我认为会是"MyService"。
可能是没有为新站点配置https绑定。
在IIS中,选择站点,然后单击高级设置并检查绑定的内容。请确保https在列表中。
编辑
另一个可能的情况是svc处理程序没有被激活。该网站是否已打开ASP.Net?
你应该先在没有https的情况下测试它,以确保问题与https有关。
编辑2
请确保网站已启动。您是否已检查是否可以通过浏览器访问svc。
你在机器上有几个网站,都使用https。您是否已将主机标头配置为允许所有网站使用https?此网站上的https是否位于其他端口?
您的服务模型部分应该是这样的
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" httpsGetUrl="/ssl"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
<dataContractSerializer maxItemsInObjectGraph="6553600" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="TransportSecurity" maxReceivedMessageSize="2147483647">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="COLWebService.Service" behaviorConfiguration="">
<endpoint address="/ssl" binding="basicHttpBinding" bindingConfiguration="TransportSecurity" contract="MyCompany.COLWebService.ICOLWebService"/>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
</service>
</services>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
您的客户端将通过https访问服务https://subdomain.mydomain.com/MyService.svc/ssl,通过与旧版相同的httphttps://subdomain.mydomain.com/MyService.svc