Почему моя служба WIF с включенным WIF выдает исключение при попытке его разместить? - PullRequest
1 голос
/ 01 июля 2010

Следуя приведенным здесь инструкциям: http://msdn.microsoft.com/en-us/library/ee517277.aspx, Я пытаюсь настроить службу WCF для использования WIF.

Когда я пытаюсь создать экземпляр ServiceHost, выдается следующее исключение:

Тип «Microsoft.IdentityModel.Configuration.ConfigureServiceHostBehaviorExtensionElement», зарегистрированный для расширения «federatedServiceHostConfiguration», не может быть загружен.

Я никогда не настраивал службу WCF для использования WIF раньше, но я успешно настроил веб-сайты для использования WIF.Что может быть причиной этого?

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" ?>  
<configuration><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> 

Ответы [ 3 ]

3 голосов
/ 13 октября 2010

Я получаю ту же ошибку.Вам нужно добавить всю эту строку в файл конфигурации:

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

Это из примера.Тем не менее, я на самом деле использовал версию = 3.5.0.0

1 голос
/ 07 июля 2010

Мне кажется, вам нужно добавить соответствующий раздел конфигурации:

  <configSections>
    <section name="microsoft.identityModel" type="Microsoft.IdentityModel.Configuration.MicrosoftIdentityModelSection, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </configSections>
0 голосов
/ 07 июля 2010

Вы также можете обработать это с помощью кода в одной из ваших процедур запуска.

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