开发者

Why does my WIF enabled WCF service throw exception when I try to host it?

Following the instructions here: http://msdn.microsoft.com/en-us/library/ee517277.aspx, I am trying to set up a WCF service to use WIF.

When I try to instantiate the ServiceHost, the following exception is thrown:

The type 'Microsoft.IdentityModel.Configuration.ConfigureServiceHostBehaviorExtensionElement' registered for extension 'federatedServiceHostConfiguration' could not be loaded.

I have never set up WCF service to use WIF before, but I have successfully set up web sites to use WIF. What could be causing this?

Module Module1    
    Sub Main()  
        Dim sh As ServiceModel.ServiceHost  
        ''#Exception thrown on following line
        sh = New ServiceModel.ServiceHost(GetType(testService))  
        Microsoft.IdentityModel.Tokens.FederatedServiceCredentials.ConfigureServiceHost(sh)
        sh.Open()
        Console.WriteLine("Service running")
        Console.ReadLine()
       sh.Abort()
    End Sub
End Module

 

<?xml version="1.0" encoding="utf-8" ?>  
<con开发者_运维百科figuration><system.serviceModel>  
    <behaviors>  
        <serviceBehaviors>  
          <behavior name="ClaimsBehavior" >  
            <federatedServiceHostConfiguration/>  
          </behavior>  
        </serviceBehaviors>  
    </behaviors>  
    <services>  
        <service behaviorConfiguration="ClaimsBehavior"  name="WCFConsoleService.testService">  
            <endpoint address="net.tcp://localhost/testservice" binding="netTcpBinding"  
                bindingConfiguration="" contract="WCFConsoleService.iTestService" />  
        </service>  
    </services>  
    <extensions>  
        <behaviorExtensions>  
            <add name="federatedServiceHostConfiguration"
                 type="Microsoft.IdentityModel.Configuration.ConfigureServiceHostBehaviorExtensionElement" >  
        </behaviorExtensions>  
    </extensions>  
</system.serviceModel>  
</configuration> 


I was getting the same error. You need to add this entire line to the config file:

<add name="federatedServiceHostConfiguration" type="Microsoft.IdentityModel.Configuration.ConfigureServiceHostBehaviorExtensionElement, Microsoft.IdentityModel, Version=0.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

This is from the example. However, I actually used Version=3.5.0.0


I thin you need to add the appropriate config section:

  <configSections>
    <section name="microsoft.identityModel" type="Microsoft.IdentityModel.Configuration.MicrosoftIdentityModelSection, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </configSections>


You can also handle this via code in one of your startup routines.

Microsoft.IdentityModel.Tokens.FederatedServiceCredentials.ConfigureServiceHost(wcfHost, FederatedAuthentication.ServiceConfiguration);
FederatedAuthentication.ServiceConfiguration.AudienceRestriction.AllowedAudienceUris.Add(endpoint.Address.Uri);
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜