IIS 7 WCF Webservices 通过 HTTPS 给出 404 错误

Mor*_*ael 8 http iis-7 https wcf http-status-code-404

我有一些在 IIS 7.5 下运行的 WCF web 服务,它们正确响应 http 请求,但在使用 SSL 调用方法时响应 404(未找到)错误。

该站点的绑定如下:

IIS 7 站点绑定

当调用http://127.0.0.1:8088/Public/PublicDataService.svc 时,我得到了预期的响应:

您已经创建了一个服务。

要测试此服务,您需要创建一个客户端并使用它来调用该服务。您可以使用命令行中的 svcutil.exe 工具使用以下语法执行此操作:等

同样,调用任何 Service 方法都有效,有一个最基本的方法叫做 CanConnect,它只返回“true”

http://127.0.0.1:8088/Public/PublicDataService.svc/CanConnect

真的

使用 https 时,结果如下。

https://127.0.0.1/Public/PublicDataService.svc

您已经创建了一个服务。

要测试此服务,您需要创建一个客户端并使用它来调用该服务。您可以使用以下语法从命令行使用 svcutil.exe 工具执行此操作:

https://127.0.0.1/Public/PublicDataService.svc/CanConnect

“/Public”应用程序中的服务器错误。

无法找到该资源。

描述:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、更改名称或暂时不可用。请检查以下 URL 并确保其拼写正确。

请求的 URL:/Public/PublicDataService.svc/CanConnect

版本信息:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.6.1055.0

这让我完全被难住了,如何调用 .svc 工作但它的内部方法给出 404?更令人困惑的是,这是有效的……事实上,我什至不确定它何时停止,即它是否对应于代码发布或服务器补丁等。

网站的实际配置是这样的:

Webservices (this is the root of the application / where the Web.Config sits)
- Public (a windows directory, no addition config)
Run Code Online (Sandbox Code Playgroud)

还有许多其他服务直接在根目录下运行,它们在 http 和 https 下都运行良好。

关于可能导致这种情况的任何想法。

Mor*_*ael 9

事实证明,这只是 web.config 文件中的一个错误。

SO上的这两个答案是解决方案:

/sf/answers/1860692851/

而反过来

/sf/answers/1857730241/

奇怪的是,它曾经在 http 和 https 上工作过,然后就停止了......其他地方一定有一些其他的配置更改......

编辑:完整性的实际修复

以下是在 web.config 中从“无”更改为“传输”

<system.serviceModel>
    <bindings>
        <webHttpBinding>
            <binding>
                <security mode="Transport" />
Run Code Online (Sandbox Code Playgroud)