在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 "就能正常工作。
HostNameComparisonMode:该值表示在匹配URI时是否使用主机名来访问服务。
比如说。
服务器暴露的端点地址是net.tcp:/localhostTest,客户端可以使用不同的主机名来访问这个服务端点,如下图。
net.tcp:/localhostTest
net.tcp:/127.0.0.1测试。
net.tcp:/computernameTest。
以上所有的地址都允许客户端访问指定的服务端点.这是因为hostnamecomparisonmode属性的默认值是strongwildcard,即忽略主机名的匹配。
如果hostnamecomparisonmode的值是精确的,那么主机名必须完全匹配.如果服务器暴露的端点地址的主机名是localhost,客户端的端点地址也必须使用localhost。否则,客户端将出现endpointnotfoundexception。
关于HostNameComparisonMode的更多信息,请参考以下链接。