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

In C# WCF service If HostNameComparisonMode = "HostNameComparisonMode.Exact", not able to access URL in browser saying 404 Error

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

但是当我用一些不同的名字改变URL路径时,它的工作就像下面给出的场景

如果 URL 是“http://localhost:8006/ComService/Service”,那么在托管 WCF 服务后我无法在浏览器中点击 URL If HostNameComparisonMode = "HostNameComparisonMode.Exact" 但它正在工作HostNameComparisonMode = "HostNameComparisonMode.StrongWildcard"

没问题

但是,如果我将 URL 更改为“http://localhost:8006/ComService/Service123”,那么它可以与 HostNameComparisonMode = "HostNameComparisonMode.Exact"

一起正常工作

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

例如:

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

net.tcp://localhost/Test

net.tcp://127.0.0.1/测试

net.tcp://computername/Test

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

如果hostnamecomparisonmode的值是准确的,主机名必须匹配exactly.If服务器暴露的端点地址的主机名是localhost,客户端的端点地址也必须使用localhost。否则客户端会有endpointnotfoundexception。

更多关于HostNameComparisonMode的内容,请参考以下内容link:

https://docs.microsoft.com/en-us/dotnet/api/system.servicemodel.hostnamecomparisonmode?view=netframework-4.8#System_ServiceModel_HostNameComparisonMode_StrongWildcard