我正在开发一个基于.Net Framework 3.5 sp1的应用程序,并托管在Windows Server 2008(64位)上。
在本地浏览wcf服务(.svc)时,每件事情都可以,但在使用完整域名网址浏览时,却出错了。
本地地址是这样的: http://localhost/MyService.svc
和域名地址如下: http://MySite.ir/MyService.svc
通过页面(.aspx)和其他文件在localhost和域地址上正常工作的方式。
任何想法都会受到赞赏
以下是详细错误:
HTTP错误404.3 - 未找到
由于扩展程序配置,无法提供您请求的页面。如果页面是脚本,请添加处理程序。如果要下载文件,请添加MIME映射。 详细的错误信息
模块: StaticFileModule
通知: ExecuteRequestHandler
处理程序: StaticFile
错误代码: 0x80070032
请求的网址: http://MySite.ir:80/MyService.svc
物理路径: D:\ inetpub \ vhosts \ MySite.ir \ httpdocs \ MyService.svc
登录方法:匿名
登录用户匿名
答案 0 :(得分:181)
请确保您已从here激活了WCF组件。
或者替代方便的是,转到控制面板 - >打开或关闭Windows功能 - >并确保您已按照以下屏幕截图中的提示选中所有选项。
您可能需要激活每个框并接受以防在一次激活所有功能时出现错误
答案 1 :(得分:24)
好的,这是答案:
转到处理程序映射 | 添加处理程序管理器 - >然后添加以下信息
请求路径: * .svc
输入: System.ServiceModel.Activation.HttpHandler,System.ServiceModel,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089
名称: svc-Integrated
答案 2 :(得分:9)
如果有人在Windows Server 2012上遇到此问题,Bill Moon的回答here就为我解决了这个问题:
“对于Windows Server 2012 ...从服务器管理器中,单击添加角色和功能,选择相应的服务器,然后选择功能。在.NET Framework 4.5功能下,您将看到WCF服务,在此之下,你会找到HTTP激活。“
答案 3 :(得分:7)
我的笔记本电脑中安装了Windows 10,并使用visual studio 2015进行WCF开发。 WCF在visual studio中正常运行,但是当在IIS中托管时我遇到了同样的错误。
我检查了IIS处理程序。 svc扩展程序丢失了。所以我尝试在第一个答案中按照Mori的建议在IIS中添加新的处理程序。我找不到类型“System.ServiceModel.Activation.HttpHandler”。
所以我打开了“打开或关闭Windows功能”并安装了屏幕截图中突出显示的功能。
这对我有用。
答案 4 :(得分:0)
如果您使用的是.Net 4.x,则PublicKeyToken为31bf3856ad364e35。
但是,关于this post关于在IIS中正确安装WCF服务的问题,我已经为我设置了处理程序。
答案 5 :(得分:0)
我想将此添加为对答案的评论,但没有足够的代表。我尝试使用各种标志运行ServiceModelReg和aspnet_regiis.exe并添加了HTTP激活功能,但它仍然无法正常工作。即使在IIS中使用Handler映射UI也无法工作,因为它无法找到System.ServiceModel.Activation.HttpHandler。最终工作的是将Mori手动添加到我的web.config文件中。
<system.webServer>
<handlers>
<add name="svc-Integrated" path="*.svc" verb="GET,HEAD,POST,DEBUG" type="System.ServiceModel.Activation.HttpHandler, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" responseBufferLimit="4194304" />
我的项目在Windows 7上运行.Net 3.5和IIS 7.5,在Win Server 2008 R2上运行IIS 7.0。
答案 6 :(得分:0)
尝试从“打开或关闭Windows功能”窗口(See here)取消选中WCF HTTP激活,然后转到
重新安装%windir%\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\
并执行 ServiceModelReg -i