繁体   English   中英

IIS 7.0 Web服务-在HTTP(80)上运行,在HTTPS(443)上失败,错误404

[英]IIS 7.0 Web Service - Works on HTTP (80), Fails with error 404 on HTTPS (443)

Windows 2008上的IIS 7.0

WCF Web服务,VS 2010中的.NET 4

Web服务是通过发布安装的,我在服务器上拥有完整的管理员权限。 有几种复杂的方法,但是有一种简单的方法可以返回构建版本。 如果我们可以解决这个问题,则可以全部修复-这是我的界面:

namespace MyNameSpace
{

    [ServiceContract]
    public interface WebInterface
    {

        [OperationContract]
        [WebGet]
        string GetVersion();

尝试通过HTTP://连接,一切正常!

尝试通过HTTPS://连接,但未找到404文件。

当浏览到HTTP和HTTPS上完全相同的URL时,我可以到达通用的“您已创建Web服务...”页面,包括完整的Web服务路径和C#通用示例代码。

在C#中,我读到证书可能会引起麻烦,并且我已经实现了委托重载来批准我们的服务器证书。

我怀疑Web.config文件中缺少一个或多个条目,但是我不知道从哪里开始。 我曾尝试过Google搜索和Stack Overflow搜索,但没有找到正确的搜索字词组合来解决此特定问题。

网络配置:

<system.serviceModel>
  <behaviors>
    <serviceBehaviors>
      <behavior name="HttpGetMetadata">
        <serviceDebug includeExceptionDetailInFaults="true"/>
        <serviceMetadata httpGetEnabled="true" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <services>
    <service name="LinkService" behaviorConfiguration="HttpGetMetadata">
      <endpoint address="" contract="WebInterface" binding="basicHttpBinding" />
    </service>
  </services>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>

请帮助。

您正在使用basicHttpBinding的默认值,并且该绑定的默认安全模式是None。 您需要定义绑定,并在配置中将安全模式设置为“ Transport 将Bindings部分添加到ServiceModel部分,如下所示:

<serviceModel>
  <Bindings>
    <basicHttpBinding name="secureBinding">
      <security mode="Transport">
        <transport clientCredentialType="None" />
      </security>
    </basicHttpBinding>
  </Bindings>
</serviceModel>

然后,您需要通过bindingConfiguration属性将此绑定分配给端点,如下所示:

<endpoint address="" 
          binding="basicHttpBinding" 
          bindingConfiguration="secureBinding"  
          contract="WebInterface" />

您可能还希望启用httpsGetEnabled

<serviceMetadata httpGetEnabled="true"
                 httpsGetEnabled="true" />

请参阅带有传输安全性的BasicBinding (这是示例代码所基于的)。

您也可以使用诸如“ BasicHttpBinding WCF SSL”之类的术语和类似的内容在Google上进行搜索-网络上有很多示例和信息,仅需使用正确的词即可:)

另外,我不是100%确信transportClientCredential设置对您的情况是正确的(它可能需要是Certificate ),但是对于WCF,我对SSL所做的工作很少。

可能还有其他问题(例如,如何在计算机上设置IIS),但是以上是配置所需要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM