在ASP.NET服务器2012上将我的ASP.NET网站移动到IIS 8 ...缺少服务:.svc文件是可见的,但是他们的方法给出了404

MGO*_*wen 11 asp.net wcf http-status-code-404 iis-8

我从Windows Server 2003上的IIS 6移动.

可以浏览.svc文件.如果我在浏览器中访问http://example.com/Service.svc,我会得到一个很好的标准"这是一个Windows©Communication Foundation服务"页面.

无法浏览任何方法 - 如果我在浏览器中访问http://example.com/Service.svc/Method?parameter=xyz,我会收到404错误.

有没有人见过这样的东西?任何想法或建议?

我想我可能会遇到类似的问题:IIS8上的WCF;*.svc处理程序映射不起作用

但症状是不同的(看起来他们根本看不到.svc文件)并且没有解决方案工作(我已经安装了WCF功能的Http Activation等).

MGO*_*wen 23

好吧,我放弃并支付微软250美元的支持.在技​​术人员的帮助下,我们找到了解决方案,昨晚确认它绝对是我们所有服务器的解决方案:我们在web.config中为WCF服务完全禁用了SSL:

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

"传输"是指传输层安全性(TLS是新的SSL)所以HTTPS.改为:

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

事实证明,WCF对您使用的是HTTP还是HTTPS非常敏感,如果您使用的是错误的,则不会产生任何有用的错误,只有404.

就我而言,旧服务器和新服务器都配置为始终使用HTTPS以确保安全性.但在新服务器上,SSL(TLS)加密在负载均衡器上终止.在这种情况下,加密仅发生在用户的浏览器和负载均衡器之间,我们的负载均衡器和Web服务器之间流量是未加密的HTTP.

所以服务正在侦听HTTPS,当请求来自HTTP时,它完全忽略了它.

(所有其他关于在线类似问题的讨论都集中在卸载和重新安装IIS和ASP.NET以及WCF和HTTP激活等等,所以我希望这对某人有所帮助.如果你对MS堆栈有疑问,我建议MS支持没有及时回答.它肯定比浪费几个小时试图单独修复便宜得多.


Pra*_*ngh 13

请检查您的IIS是否添加了svc处理程序.

WCF服务不能在具有默认配置的IIS 8上运行,因为Web服务器不知道如何处理以.svc文件为目标的传入请求.你可以分两步教它:

  1. 添加新的MIME类型:

Extension: .svc MIME type: application/octet-stream

在此输入图像描述

  1. 添加新的托管HTTP处理程序:

    Request path: *.svc Type: System.ServiceModel.Activation.HttpHandler Name: svc-Integrated

在此输入图像描述

刷新您的网站/ Web应用程序

参考文献:

http://gyorgybalassy.wordpress.com/2012/09/24/publishing-a-wcf-service-on-iis8/

http://proq.blogspot.hk/2012/09/wcf-on-iis-and-windows-8.html

http://forums.iis.net/t/1200413.aspx?+svc+missing+can+t+find+Module+to+load+within+Handler+Mapping+IIS+8+0