C# wcf为什么可以';我看不到我的https站点吗

C# wcf为什么可以';我看不到我的https站点吗,c#,wcf,ssl,C#,Wcf,Ssl,我创建了一个简单的Web服务。 然后我创建了一个控制台主机,它必须通过https url托管服务 这是我的配置: <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service behaviorConfiguration="mexBehaviour" na

我创建了一个简单的Web服务。 然后我创建了一个控制台主机,它必须通过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>

这是我的程序。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();
        }
static void Main(字符串[]args)
{
ServiceHost主机=新的ServiceHost(typeof(NuriService));
host.Open();
foreach(host.BaseAddresses中的Uri地址)
{
Console.WriteLine(“监听”+地址);
}
Console.WriteLine(“按以终止主机。\n\n”);
Console.ReadLine();
host.Close();
}
我已通过以下方式创建了证书: 1.makecert.exe-sr LocalMachine-ss My-n CN=192.168-天空交易所-sk-pe 2.netsh http add sslcert ipport=192.168….:8001 certhash=(故意左)appid={(故意左)}

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

尝试将属性添加到
并指定一个空字符串:


通过您的实现,您只能期望通过在web浏览器中寻址您的基本地址来查看服务发布的元数据。在尝试执行此操作之前,在visual Studio中的Debugger中运行服务是值得的(不要运行主机,只运行service/lib)。如果运行时没有错误,请尝试在浏览器中寻址该服务


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

您使用什么URL来访问服务元数据?无,我添加了端口为9000的ip,但网站也不会显示..您在哪里“添加”了端口为9000的ip地址?另外,当你说“网站”时,你是指WCF帮助页面吗?不,如果我按F5,我的控制台就会启动。。。然后,如果我打开https链接,我将看不到我的wcf页面,但只有一个页面不存在。https链接指向什么URL?如果您尝试使用Internet Explorer访问URL,您会得到什么?Internet Explorer无法显示禁用https的网页,并查看您是否可以通过
http://localhost:8001/SecureConsole?wsdl
。我现在得到了这个消息,它说找不到与绑定BasicHttpBinding的端点的scheme https匹配的基址。注册的基址方案为[http]。对于ServiceHost主机=新ServiceHost(typeof(NuriService));将行
30
更改为
<serviceBehaviors>
    <behavior name="mexBehaviour">
        <serviceMetadata  httpGetEnabled="false"
                          httpsGetEnabled="true"
                          httpsGetUrl="" />
    </behavior>
</serviceBehaviors>
https://localhost:8001/SecureConsole?wsdl