gpt4 book ai didi

c# - 在 Windows 7 上托管 WCF 服务时需要不同的 URL

转载 作者:太空宇宙 更新时间:2023-11-03 15:50:48 27 4
gpt4 key购买 nike

我有一个 WCF 服务定义如下:

<service name="MyService">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/ServiceContainer" />
</baseAddresses>
</host>
<endpoint address="Service" binding="webHttpBinding" contract="IService" />
</service>

我的服务实现了以下契约:

[ServiceContract]
public interface IService
{
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "DoWork")]
void MyMethod();
}

我使用 WebServiceHost 将 WCF 服务托管为 Windows 服务。

XP 上托管我调用此 URI 上的操作:

http://myhost:8080/ServiceContainer/DoWork

(即基地址/URI 模板)

Windows 7 上托管,相同的 URI 失败(出现 404 错误)。但是,以下 URI 成功:

http://myhost:8080/ServiceContainer/Service/DoWork

(即基址/端点地址/URI 模板)

第二个 URI 也适用于 XP。调用服务的客户端操作系统没有区别。

这两个操作系统之间存在这种行为差异的原因是什么? UriTemplate 是否在 Windows 7 下更具限制性?所有这些都记录在某处吗?


编辑:我还运行了 Windows 防火墙和防病毒扫描程序(我无法禁用)。但是,我在他们的日志中没有看到任何东西(例如 pfirewall.log)表明某些东西被阻止了。

编辑 2: 添加以下保留 URI 允许在 Windows 7 上使用该服务,但不会影响上述行为:

netsh http add http://+:8080/ user=\Everyone

最佳答案

如果您的系统上有防火墙或防病毒软件,请将其关闭并检查,404 错误是非常普遍的。

检查这个 URL

http://myhost:80/ServiceContainer/DoWork

关于c# - 在 Windows 7 上托管 WCF 服务时需要不同的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25937438/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com