【问题标题】:wcf why can't I see my https sitewcf 为什么我看不到我的 https 网站
【发布时间】:2012-03-13 12:43:17
【问题描述】:

我创建了一个简单的网络服务。 然后我创建了一个控制台主机,它必须通过 https url 托管服务..

这是我的配置:

     <?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <services>
            <service behaviorConfiguration="mexBehaviour" name="NuriServiceLibrary.NuriService">
                <clear />
                <endpoint address="" binding="basicHttpBinding" bindingConfiguration="basicHttpBindingConfig"
                    contract="NuriServiceLibrary.iNuriService" listenUriMode="Explicit" />
                <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
                <host>
                    <baseAddresses>
                        <add baseAddress="https://192.168.....:8001/SecureConsole" />
                    </baseAddresses>
                </host>
            </service>
        </services>
      <behaviors>
        <serviceBehaviors>
          <behavior name="mexBehaviour">
            <serviceMetadata  httpGetEnabled="false" httpsGetEnabled="true"  />
          </behavior>
        </serviceBehaviors>
      </behaviors>

      <bindings>
        <basicHttpBinding>
          <binding name="basicHttpBindingConfig">
            <security mode="Transport">
              <transport clientCredentialType="None" />
            </security>
          </binding>
        </basicHttpBinding>
      </bindings>
    </system.serviceModel>
</configuration>

这是我的 program.cs:

    static void Main(string[] args)
        {
            ServiceHost host = new ServiceHost(typeof(NuriService));
            host.Open();
            foreach (Uri address in host.BaseAddresses)
            {
                Console.WriteLine("Listening on " + address);
            }
            Console.WriteLine("Press <Enter> to terminate Host.\n\n");
            Console.ReadLine();

            host.Close();
        }

我创建了一个证书: 1. makecert.exe -sr LocalMachine -ss My -n CN=192.168..... -sky exchange -sk -pe 2. netsh http add sslcert ipport=192.168....:8001 certhash=(故意留下) appid={(故意留下)}

但问题是,我看不到我的 https 网页……我看到这个网站不可用…… 有人有想法吗?

【问题讨论】:

  • 您使用什么 URL 来访问服务元数据?
  • 无,我添加了端口为 :9000 的 ip,但网站也不会显示..
  • 您在哪里“添加”了 9000 端口的 IP 地址?另外,当您说“网站”时,您是指 WCF 帮助页面吗?
  • 不,如果我按 F5 然后我的控制台启动...然后如果我打开 https 链接,我将看不到我的 wcf 页面,但只有页面不存在..
  • HTTPS 链接指向什么网址?

标签: c# wcf ssl


【解决方案1】:

尝试将HttpsGetUrl 属性添加到&lt;serviceMetadata&gt; 并指定一个空字符串

<serviceBehaviors>
    <behavior name="mexBehaviour">
        <serviceMetadata  httpGetEnabled="false"
                          httpsGetEnabled="true"
                          httpsGetUrl="" />
    </behavior>
</serviceBehaviors>

这将使服务元数据可通过服务的base address

https://localhost:8001/SecureConsole?wsdl 

【讨论】:

  • 如果您尝试使用 Internet Explorer 访问 URL,您会得到什么?
  • Internet Explorer 无法显示网页
  • 尝试禁用 HTTPS,看看是否可以通过http://localhost:8001/SecureConsole?wsdl访问服务。
  • pastebin.com/DxjGYEUS 这是我现在得到的,它说找不到与绑定 BasicHttpBinding 的端点的方案 https 匹配的基地址。注册的基地址方案是 [http]。 for ServiceHost host = new ServiceHost(typeof(NuriService));
  • 将行 30 更改为 &lt;security mode="None"&gt;
【解决方案2】:

通过您的实现,您只能期望通过在网络浏览器中寻址您的基地址来查看您的服务发布的元数据。在您尝试执行此操作之前,值得在 Visual Studio 的调试器中运行您的服务(不要运行主机,只需运行服务/库)。如果这运行没有错误,那么尝试在浏览器中处理该服务。

如果您真正想要的是托管您的服务并使用 Web 浏览器作为客户端,那么您需要研究 ASP.net

【讨论】:

    猜你喜欢
    • 2011-04-02
    • 1970-01-01
    • 2013-09-09
    • 2020-09-13
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多