none
关于WCF标准终结点的问题 RRS feed

  • 问题

  •                                                                                                                                                                                                                                                                                                                                    

     //这个类,使用定义标准终结点的

    publicclassMyServiceEndpoint : ServiceEndpoint     {         privatebool property;         publicbool Property         {             get { return property; }             set { property = value; }         }         public MyServiceEndpoint()             : this(string.Empty)         {         }         public MyServiceEndpoint(string address)             : this(address, ContractDescription.GetContract(typeof(IService)))         {         }         public MyServiceEndpoint(string address, ContractDescription contract)             : base(contract)         {             this.Binding = newWSHttpBinding();             this.IsSystemEndpoint = false;         }

    //这个类 我定义终结点配置元素

    publicclassMyServiceElement : StandardEndpointElement     {         privatebool property;         publicbool Property         {             get { return property; }             set { property = value; }         }         // 摘要://     在派生类中实现时,利用指定的协定说明中包含的消息信息创建服务终结点。// 参数://   contractDescription:有关从终结点发送的消息中包含哪些内容的信息。// 返回结果 : 服务终结点.protectedoverride System.ServiceModel.Description.ServiceEndpoint CreateServiceEndpoint(System.ServiceModel.Description.ContractDescription contractDescription)         {             returnnewMyServiceEndpoint();         }         // 摘要:未实现。// 返回结果:System.Type.protectedoverrideType EndpointType         {             get             {                 returntypeof(MyServiceEndpoint);             }         }         //// 摘要://     当从派生类中调用时,从配置文件加载服务说明信息,并将其应用于正在构造的运行时。//// 参数://   endpoint://     一个终结点,它使客户端能够查找服务并与之进行通信。////   serviceEndpointElement://     服务应用程序的服务终结点元素。//protectedoverridevoid OnApplyConfiguration(System.ServiceModel.Description.ServiceEndpoint endpoint, ServiceEndpointElement serviceEndpointElement)         {             MyServiceEndpoint myEndpoint = endpoint asMyServiceEndpoint;             if (myEndpoint != null)             {                 myEndpoint.Property = this.property;             }         }         //// 摘要://     当从派生类中调用时,从配置文件加载服务说明信息,并将其应用于正在构造的运行时。//// 参数://   endpoint://     一个终结点,它使客户端能够查找服务并与之进行通信。////   channelEndpointElement://     一个终结点元素,它定义在客户端与服务之间来回传递的消息的物理传输。protectedoverridevoid OnApplyConfiguration(System.ServiceModel.Description.ServiceEndpoint endpoint, ChannelEndpointElement channelEndpointElement)         {             MyServiceEndpoint myEndpoint = endpoint asMyServiceEndpoint;             if (myEndpoint != null)             {                 myEndpoint.Property = this.property;             }         }         //// 摘要://     当从派生类中调用时,初始化并验证服务应用程序配置文件中的指定服务终结点的格式。//// 参数://   channelEndpointElement://     一个终结点元素,它定义在客户端与服务之间来回传递的消息的物理传输。protectedoverridevoid OnInitializeAndValidate(ServiceEndpointElement serviceEndpointElement)         {                      }         protectedoverridevoid OnInitializeAndValidate(ChannelEndpointElement channelEndpointElement)         {                      }

    //这个是定义注册标准终结点的

    publicclassMyServiceCollectionEndpoint : StandardEndpointCollectionElement<MyServiceEndpointMyServiceElement>     {     }

                 这个是WebConfig

    <?xml version="1.0encoding="utf-8"?><configuration>  <system.web>    <compilation debug="truetargetFramework="4.0" />  </system.web>  <system.serviceModel>    <extensions>      <endpointExtensions>        <add name="MyServiceStantEndpointtype="WcfService2.MyServiceCollectionEndpoint"/>      </endpointExtensions>    </extensions>    <standardEndpoints>      <MyServiceStantEndpoint>        <standardEndpoint Property="true"></standardEndpoint>      </MyServiceStantEndpoint>    </standardEndpoints>    <services>      <service name="WcfService2.Service">        <endpoint address="http://localhost/HOIPServices/Service.svc/MyServiceStantEndpointisSystemEndpoint="truekind="MyServiceStantEndpoint"></endpoint>      </service>    </services>    <behaviors>      <serviceBehaviors>        <behavior>          <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点 -->          <serviceMetadata httpGetEnabled="true"/>          <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->          <serviceDebug includeExceptionDetailInFaults="false"/>        </behavior>      </serviceBehaviors>    </behaviors>    <serviceHostingEnvironment multipleSiteBindingsEnabled="true">      <serviceActivations>        <add relativeAddress="~/Service.svcservice="WcfService2.Service"/>      </serviceActivations>    </serviceHostingEnvironment>    <!--<protocolMapping>      <add scheme="http" binding="wsHttpBinding"/>    </protocolMapping>-->  </system.serviceModel>  <system.webServer>    <modules runAllManagedModulesForAllRequests="true"/>  </system.webServer></configuration>


    报的错误是

    “/HOIPServices”应用程序中的服务器错误。

    配置错误

    说明: 在处理向该请求提供服务所需的配置文件时出错。请检查下面的特定错误详细信息并适当地修改配置文件。

    分析器错误消息: 找不到配置终结点扩展“standardEndpoints/MyServiceStantEndpoint”。确认在 system.serviceModel/extensions/endpointExtensions 中正确注册了此终结点扩展,且其拼写正确。

    源错误:
    行 14: 
    行 15:     <standardEndpoints>
    行 16:       <MyServiceStantEndpoint>
    行 17:         <standardEndpoint Property="true"></standardEndpoint>
    行 18:       </MyServiceStantEndpoint>

    源文件: F:\HOIPWeb\web.config 行: 16


    版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.272  
         

    2012年5月14日 14:55

答案

  • 好像你拼写有问题吧,你定义的终结点是MyServiceEndpoint,但是你在web.config中却使用了<MyServiceStantEndpoint>,这两个不一样,导致找不到MyServiceStantEndpoint扩展. 你将MyServiceStantEndpoint改为MyServiceEndpoint吧。

    Please mark the replies as answers if they help or unmark if not. If you have any feedback about my replies, please contact msdnmg@microsoft.com Microsoft One Code Framework

    2012年5月15日 3:40
    版主

全部回复

  • 好像你拼写有问题吧,你定义的终结点是MyServiceEndpoint,但是你在web.config中却使用了<MyServiceStantEndpoint>,这两个不一样,导致找不到MyServiceStantEndpoint扩展. 你将MyServiceStantEndpoint改为MyServiceEndpoint吧。

    Please mark the replies as answers if they help or unmark if not. If you have any feedback about my replies, please contact msdnmg@microsoft.com Microsoft One Code Framework

    2012年5月15日 3:40
    版主
  • 还是不行...哎..根据MSDN上说的意思编写的.可还是错...彻底蒙拉...
    2012年5月16日 10:36
  • 你将MyServiceStantEndpoint改为MyServiceEndpoint,还是抛出与上面相同的错误啊?如果不是的话,具体是什么错误?


    Please mark the replies as answers if they help or unmark if not. If you have any feedback about my replies, please contact msdnmg@microsoft.com Microsoft One Code Framework

    2012年5月18日 8:20
    版主
  • 你好,跟上面的图片一样.你该成MyServiceStantEndpoint就抱错..找不到配置终结点扩展“standardEndpoints/MyServiceStantEndpoint”。确认在 system.serviceModel/extensions/endpointExtensions 中正确注册了此终结点扩展,且其拼写正确 .

    改称MyServiceEndpoint 就抱错找不到配置终结点扩展“standardEndpoints/MyServiceEndpoint”。确认在 system.serviceModel/extensions/endpointExtensions 中正确注册了此终结点扩展,且其拼写正确 .

    2012年5月18日 13:10
  • 我感觉,WCF 在标准终结点这方面好像比较敷衍..WCF团队貌似 对Odata数据服务比较上心呢咋... 你看到我写的代码就知道,超级麻烦..
    2012年5月18日 13:12
  •     <extensions>
          <endpointExtensions>
            <add name="MyServiceStantEndpoint" type="WcfService2.MyServiceCollectionEndpoint"/>
          </endpointExtensions>
        </extensions>
    这里的MyServiceStantEndpoint你改成了MyServiceEndpoint了么。

    Please mark the replies as answers if they help or unmark if not. If you have any feedback about my replies, please contact msdnmg@microsoft.com Microsoft One Code Framework

    2012年5月21日 7:04
    版主
  • 你好,这两忙.没有到论坛看看..改了..但还是老问题..哎..

    2012年5月25日 12:08