试图让我的WCF服务在IIS 6下运行.
我创建了.svc
并aspnet_isapi.dll
映射根据:http://msdn.microsoft.com/en-us/library/ms752241.aspx
查看Server1.svc
页面时,我得到的是404.
我已经使用简单的.aspx页面测试了该站点,以确保URL正常工作,但同样不再使用.svc扩展名.
我安装了.NET 3.5 SP1,我web.config
正在引用3.5程序集,并且在查看.aspx页面时我没有收到错误,所以它可能会正确地选择那些程序集.
可能有什么不对?
很可能.svc扩展名未在IIS下注册为由ASP.NET(WCF)处理.
尝试这两个步骤(如果需要,用Framework64替换Framework):
去:
C:\Windows\Microsoft.NET\Framework\v2.0.50727\
然后运行:
aspnet_regiis -i
转到:C:\ Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation
然后运行:
ServiceModelReg.exe -i
在Internet Information Service (IIS) Manager
,打开调用的节点Web Service Extension
.确保将ASP.NET v2.0.5.0727
其设置为"允许".我花了几个小时寻找不同的设置,发现它被设置为禁止.只需单击"允许"按钮即可启用ASP.NET.
我能想到两件事:
.svc扩展名未正确设置(根据您的描述最不可能).您可以查看此帖子了解更多详情.
或者您的网站有多个主机标头.要解决此问题,您必须具有单个主机标头或使用工厂.这是一个例子:
namespace MyNamespace { public class MultipleHostServiceFactory : ServiceHostFactory { protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) { Listaddresses = new List (); addresses.Add(baseAddresses[0]); return base.CreateServiceHost(serviceType, addresses.ToArray()); } } }
接下来,您需要在.svc文件的标记中设置工厂:
<%@ ServiceHost Language="C#" Debug="false" Factory="MyNamespace.MultipleHostServiceFactory" Service="MyNamespace.MyService" CodeBehind="MyService.svc.cs" %>