在C# WCF服务中,如果HostNameComparisonMode = "HostNameComparisonMode.Exact",在浏览器中无法访问URL,显示404错误。

问题描述 投票:0回答:1

在WCF服务中,如果HostNameComparisonMode = "HostNameComparisonMode.Exact",在浏览器中无法访问URL,说404错误。

但是当我用不同的名字改变URL路径时,它的工作就像下面给出的情况一样。

如果URL是"http:/localhost:8006ComServiceService。"然后WCF服务被托管后,我无法在浏览器中点击URL 如果HostNameComparisonMode = "HostNameComparisonMode.Exact",但HostNameComparisonMode = "HostNameComparisonMode.StrongWildcard "时,其工作正常。

但是,如果我把URL改为""。http:/localhost:8006ComServiceService123。"那么HostNameComparisonMode = "HostNameComparisonMode.Exact "就能正常工作。

c# .net wcf localhost wcf-binding
1个回答
0
投票

HostNameComparisonMode:该值表示在匹配URI时是否使用主机名来访问服务。

比如说。

服务器暴露的端点地址是net.tcp:/localhostTest,客户端可以使用不同的主机名来访问这个服务端点,如下图。

net.tcp:/localhostTest

net.tcp:/127.0.0.1测试。

net.tcp:/computernameTest。

以上所有的地址都允许客户端访问指定的服务端点.这是因为hostnamecomparisonmode属性的默认值是strongwildcard,即忽略主机名的匹配。

如果hostnamecomparisonmode的值是精确的,那么主机名必须完全匹配.如果服务器暴露的端点地址的主机名是localhost,客户端的端点地址也必须使用localhost。否则,客户端将出现endpointnotfoundexception。

关于HostNameComparisonMode的更多信息,请参考以下链接。

https:/docs.microsoft.comen-usdotnetapisystem.servicemodel.hostnamecomparisonmode?view=netframework-4.8#System_ServiceModel_HostNameComparisonMode_StrongWildcard。

© www.soinside.com 2019 - 2024. All rights reserved.