Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 没有端点在侦听https://wserver:442/service1.svc_C#_Wcf_Web Services - Fatal编程技术网

C# 没有端点在侦听https://wserver:442/service1.svc

C# 没有端点在侦听https://wserver:442/service1.svc,c#,wcf,web-services,C#,Wcf,Web Services,我正在尝试使用自签名SSL设置WCF服务 我可以浏览到HTTPS,它显示元数据,我可以创建一个服务引用 但是它抛出了一个异常:在https://wserver:442/service1.svc 这可以接受这一信息 wserver是我的服务器的名称,但我没有在任何地方使用它,所以我不知道它是从哪里获得的 我的服务器Webhost.config(我认为问题可能出在这里)是: 为什么会发生这种情况,有几个原因。由于您有一个在443上运行的默认https,所以您正在使用端口442作为服务的https 您

我正在尝试使用自签名SSL设置WCF服务

我可以浏览到HTTPS,它显示元数据,我可以创建一个服务引用

但是它抛出了一个异常:在
https://wserver:442/service1.svc
这可以接受这一信息

wserver是我的服务器的名称,但我没有在任何地方使用它,所以我不知道它是从哪里获得的

我的服务器Webhost.config(我认为问题可能出在这里)是:


为什么会发生这种情况,有几个原因。由于您有一个在443上运行的默认https,所以您正在使用端口442作为服务的https

您是否在端口442上执行了有关https侦听的映射?您可以使用netsh命令执行此操作,如下所示:

C:\> netsh http add sslcert ipport=0.0.0.0:442 certhash=6797aea29440de9389bc636e15a35b741d8c22a3 appid={2e80948d-9ae6-42c9-ad33-294929333965}
您的证书散列需要是指纹id,appid是WCF项目dll的散列id,您可以在assembly.cs文件中使用它,否则在生成项目之前创建一个并包含它

接下来,定义了一个mex端点,可以删除该端点,并将serviceMetaData元素更改为具有
httpsGetEnabled=“true”
httpGetEnabled=“false”

现在,请确保浏览到您的服务页面,看看是否出现问题

接下来,在调用WCF服务调用之前,在客户端代码中,您需要执行以下步骤以绕过证书验证检查:

    System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) =>
                                                                             {
                                                                                 return true;
                                                                             };

使用上述代码的原因是您使用的是自签名证书。如果您拥有由某个受信任的机构颁发的证书,则不需要在客户端应用程序中使用上述代码。

我在服务器端Web.Config文件的WCF服务中更改了HTTPSEnabled和HTTPEnabled属性,如上所示。 它在没有发出“没有端点侦听…”问题的情况下运行良好。 由于网站严格要求SSL,HTTPEnabled属性应设置为false。
感谢您在上面发布解决方案

您的服务是如何托管的?442端口正确吗?-HTTPS的默认值是443。连接URL来自客户端代理-这是它唯一的来源,因为您没有明确指定要连接的端点。我已经有一个服务器在443上运行HTTPS,所以我使用了442.Ok。要解决此问题,我建议您在客户端启用WCF跟踪,并查看输出。配置是webhost.config还是web.config?你说的是前者,但应该是后者——这是你信息中的打字错误吗?这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论-您可以随时对自己的帖子发表评论,一旦您拥有足够的声誉,您就可以对任何帖子发表评论。
C:\> netsh http add sslcert ipport=0.0.0.0:442 certhash=6797aea29440de9389bc636e15a35b741d8c22a3 appid={2e80948d-9ae6-42c9-ad33-294929333965}
    System.Net.ServicePointManager.ServerCertificateValidationCallback = (sender, cert, chain, error) =>
                                                                             {
                                                                                 return true;
                                                                             };