0

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>

请帮忙。

4

1 回答 1

2

您使用的是 的默认值basicHttpBinding,并且该绑定的默认安全模式是无。您需要在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”之类的术语进行谷歌搜索 - 网络上有很多示例和信息,只需使用正确的词即可:)

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

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

于 2013-06-22T07:35:00.290 回答