代码改变世界

WCF-找不到终结点

2013-04-05 00:01  dreamhappy  阅读(6208)  评论(3编辑  收藏  举报

开发环境:Vs2010SP1 Rel

问题:开发WCF服务端新建Wcf服务的过程中,正常的新建了svc服务,在浏览器中打开总是提示找不到终结点


解决:添加svc文件时,应该选择WCF服务,而不是WCF数据服务,

如果你选择WCF数据服务,生成的svc头命令是

<%@ ServiceHost Language="C#" Factory="System.Data.Services.DataServiceHostFactory, System.Data.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Service="OrderAnswer.WcfHost.WcfDataService1" %>

在浏览器中浏览这个服务,总是会提示缺少终结点

自动代码生成,这个跟选择WCF服务,生成的文件时不一样的

public class WcfDataService1 : DataService< /* TODO: 在此放置数据源类名*/ >
    {
        // 仅调用此方法一次以初始化涉及服务范围的策略。
        public static void InitializeService(DataServiceConfiguration config)
        {
            // TODO: 设置规则以指明哪些实体集和服务操作是可见的、可更新的,等等。
            // 示例:
            // config.SetEntitySetAccessRule("MyEntityset", EntitySetRights.AllRead);
            // config.SetServiceOperationAccessRule("MyServiceOperation", ServiceOperationRights.All);
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
        }
    }

 

 Note:

在服务端新建WCF服务时,配置文件会自动添加 system.serviceModel 节点  

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

我发现用VS2010 SP1 服务端添加SVC服务时,config文件中不包含 bindings和services 服务也可以正常被调用