按照此处的说明操作:http://msdn.microsoft.com/en-us/library/ee517277.aspx,我正在尝试设置WCF服务以使用WIF。
当我尝试实例化ServiceHost
时,抛出以下异常:
无法加载为扩展名“federatedServiceHostConfiguration”注册的“Microsoft.IdentityModel.Configuration.ConfigureServiceHostBehaviorExtensionElement”类型。
我之前从未设置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>
答案 0 :(得分:3)
我得到了同样的错误。您需要将整行添加到配置文件中:
<add name="federatedServiceHostConfiguration" type="Microsoft.IdentityModel.Configuration.ConfigureServiceHostBehaviorExtensionElement, Microsoft.IdentityModel, Version=0.6.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
这是来自这个例子。但是,我实际使用的是Version = 3.5.0.0
答案 1 :(得分:1)
我很瘦,你需要添加适当的配置部分:
<configSections>
<section name="microsoft.identityModel" type="Microsoft.IdentityModel.Configuration.MicrosoftIdentityModelSection, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</configSections>
答案 2 :(得分:0)
您也可以通过其中一个启动例程中的代码处理此问题。
Microsoft.IdentityModel.Tokens.FederatedServiceCredentials.ConfigureServiceHost(wcfHost, FederatedAuthentication.ServiceConfiguration);
FederatedAuthentication.ServiceConfiguration.AudienceRestriction.AllowedAudienceUris.Add(endpoint.Address.Uri);