Web services Web SVC可以在HTTP上工作,但不能在HTTPS上工作
我试过网上发布的几种解决方案,但似乎都不管用 我对web服务方法的响应是: 404:找不到文件或目录 当我访问AddressService.svc文件的http版本时,我会得到一个服务描述。当我访问该方法(AddressService.svc/ValidateAddress)时,我得到了“get method not allowed”,这是预期的,因为它只是一个POST方法。当我尝试AddressService.svc页面的https版本时,我还得到了服务描述。但是,当我尝试访问该方法(AddressService.svc/ValidateAddress)时,我得到了404/notfound结果 以下是我当前在web.config中获得的内容: 绑定:Web services Web SVC可以在HTTP上工作,但不能在HTTPS上工作,web-services,wcf,https,Web Services,Wcf,Https,我试过网上发布的几种解决方案,但似乎都不管用 我对web服务方法的响应是: 404:找不到文件或目录 当我访问AddressService.svc文件的http版本时,我会得到一个服务描述。当我访问该方法(AddressService.svc/ValidateAddress)时,我得到了“get method not allowed”,这是预期的,因为它只是一个POST方法。当我尝试AddressService.svc页面的https版本时,我还得到了服务描述。但是,当我尝试访问该方法(Addr
<bindings>
<basicHttpBinding>
<binding name="WebServiceSoap">
<security mode="Transport" />
</binding>
</basicHttpBinding>
</bindings>
<bindings>
<webHttpBinding>
<binding name="webHttpTransportSecurity">
<security mode="Transport">
</security>
</binding>
</webHttpBinding>
</bindings>
以及AddressService.svc:
<%@ ServiceHost Language="C#" Debug="true" Service="DefiningVoiceWeb.AddressService" CodeBehind="AddressService.svc.cs" %>
我尝试过这些页面中的解决方案,但没有一个适合我:
在阅读了@pepo提供的链接后,我发现了这个问题。以下是我使用最终工作配置编辑的部分: 服务:
<service name="DefiningVoiceWeb.AddressService" behaviorConfiguration="serviceBehavior">
<endpoint address="" binding="webHttpBinding" contract="DefiningVoiceWeb.IAddressService" behaviorConfiguration="web" />
<host>
<baseAddresses>
<add baseAddress="https://www.definingvoice.com/AdminOnly/AddressService.svc" />
</baseAddresses>
</host>
</service>
<service name="DefiningVoiceWeb.AddressService" behaviorConfiguration="serviceBehavior">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="webHttpTransportSecurity" contract="DefiningVoiceWeb.IAddressService" behaviorConfiguration="webHttpBehavior" />
<host>
<baseAddresses>
<add baseAddress="https://www.definingvoice.com/AdminOnly/" />
</baseAddresses>
</host>
</service>
绑定:
<bindings>
<basicHttpBinding>
<binding name="WebServiceSoap">
<security mode="Transport" />
</binding>
</basicHttpBinding>
</bindings>
<bindings>
<webHttpBinding>
<binding name="webHttpTransportSecurity">
<security mode="Transport">
</security>
</binding>
</webHttpBinding>
</bindings>
那么,当您使用weHttpBinding时,为什么要编辑
basicHttp
绑定配置呢
可能会帮助你(虽然我没有测试)。有一篇很好的文章介绍了如何使用webHttpBinding设置https。您查看过事件日志吗?从localhost访问服务元数据时会发生什么情况?应该有更多关于激活服务所缺少的内容的信息。不幸的是,我无法访问我托管站点的事件日志。我将尝试在本地主机上的IIS Express中以https运行该站点。我没想到要试一下。我现在就试试……好吧,我取得了一些进展。在本地主机上运行之后,我发现web.config存在一些问题。我从http配置恢复到工作配置,然后添加了一些装饰,如mode=“Transport”和上面示例中的其他装饰。现在,当我转到https/…AddressService.svc时,我得到了服务的描述,它与http版本类似,但当我尝试访问AddressService.svc/ValidateAddress方法时,响应不同(请参阅上面的更新)。有什么想法吗?那是一篇好文章。谢谢你的链接。今晚我将通读一遍,并尝试将我的解决方案与他的示例相匹配。最后!至少我认为,问题在于我使用的是basicHttpBinding而不是webHttpBinding,并且我没有将bindingConfiguration添加到服务中。我会发布我的修改。再次感谢你的链接。这是一篇好文章。
<bindings>
<webHttpBinding>
<binding name="webHttpTransportSecurity">
<security mode="Transport">
</security>
</binding>
</webHttpBinding>
</bindings>