当前位置:  开发笔记 > 编程语言 > 正文

WCF未在IIS 6.0下运行

如何解决《WCF未在IIS6.0下运行》经验,为你挑选了3个好方法。

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

可能有什么不对?



1> Pawel Pabich..:

很可能.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



2> Eugene Yokot..:

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



3> Darin Dimitr..:

我能想到两件事:

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

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

namespace MyNamespace
{
    public class MultipleHostServiceFactory : ServiceHostFactory
    {
        protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
        {
            List addresses = 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" %>

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有