WCF未在IIS 6.0下运行

Bla*_*man 19 configuration wcf iis-6 web-services

试图让我的WCF服务在IIS 6下运行.

我创建了.svcaspnet_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页面时我没有收到错误,所以它可能会正确地选择那些程序集.

可能有什么不对?

Paw*_*ich 20

很可能.svc扩展名未在IIS下注册为由ASP.NET(WCF)处理.

尝试这两个步骤(如果需要,用Framework64替换Framework):

去:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\
Run Code Online (Sandbox Code Playgroud)

然后运行:

aspnet_regiis -i
Run Code Online (Sandbox Code Playgroud)

转到:C:\ Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation

然后运行:

ServiceModelReg.exe -i
Run Code Online (Sandbox Code Playgroud)


Eug*_*ota 17

Internet Information Service (IIS) Manager,打开调用的节点Web Service Extension.确保将ASP.NET v2.0.5.0727其设置为"允许".我花了几个小时寻找不同的设置,发现它被设置为禁止.只需单击"允许"按钮即可启用ASP.NET.


Dar*_*rov 6

我能想到两件事:

.svc扩展名未正确设置(根据您的描述最不可能).您可以查看此帖子了解更多详情.

或者您的网站有多个主机标头.要解决此问题,您必须具有单个主机标头或使用工厂.这是一个例子:

namespace MyNamespace
{
    public class MultipleHostServiceFactory : ServiceHostFactory
    {
        protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
        {
            List<Uri> addresses = new List<Uri>();
            addresses.Add(baseAddresses[0]);
            return base.CreateServiceHost(serviceType, addresses.ToArray());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

接下来,您需要在.svc文件的标记中设置工厂:

<%@ ServiceHost Language="C#" 
                Debug="false" 
                Factory="MyNamespace.MultipleHostServiceFactory" 
                Service="MyNamespace.MyService" 
                CodeBehind="MyService.svc.cs" %>
Run Code Online (Sandbox Code Playgroud)