Web services Web SVC可以在HTTP上工作,但不能在HTTPS上工作

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

我试过网上发布的几种解决方案,但似乎都不管用

我对web服务方法的响应是:

404:找不到文件或目录

当我访问AddressService.svc文件的http版本时,我会得到一个服务描述。当我访问该方法(AddressService.svc/ValidateAddress)时,我得到了“get method not allowed”,这是预期的,因为它只是一个POST方法。当我尝试AddressService.svc页面的https版本时,我还得到了服务描述。但是,当我尝试访问该方法(AddressService.svc/ValidateAddress)时,我得到了404/notfound结果

以下是我当前在web.config中获得的内容:

绑定:

<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>