2013-08-18 5 views
6

Dieses Problem tritt scheinbar zufällig nach dem Veröffentlichen auf. Die Website funktioniert gut und dann bam, bekomme ich diesen Fehler beim Parsen der Webconfig. Ich veröffentliche es einfach und es funktioniert wieder ein bisschen. Bei der Veröffentlichung habe ich das Kästchen angeklickt, um vorhandene Dateien zu entfernen, damit kein Müll herumliegen sollte.Windows Azure intermittierend Identitätsfehler beim Analysieren von webconfig

Dies ist ein MVC4-Projekt, das .net 4.5 und den mit Yahoo! integrierten Azure Access Control Service (ACS) verwendet. Dieser Fehler tritt auf, wenn von Yahoo zurückgeleitet wird. Dieser Weg passierte jedes Mal, aber ich fand einen Post (den ich jetzt natürlich nicht finden kann), wo es einen Fehler mit der Integration von 4.5.1 Identity und Access Visual Studio gab. Ich ging zur vorherigen Version und jetzt ist es nur manchmal.

ID8030: Der Wert der Eigenschaft 'type' konnte nicht analysiert werden.
Überprüfen Sie, ob das Attribut type des Elements '<issuerNameRegistry type="System.IdentityModel.Tokens.ValidatingIssuerNameRegistry, System.IdentityModel.Tokens.ValidatingIssuerNameRegistry"><authority name="[my authority]"><keys><add thumbprint="[print]" /></keys><validIssuers><add name="[issuer]" /></validIssuers></authority></issuerNameRegistry>' korrekt ist.

In der obigen Fehlermeldung habe ich die Elemente in Klammern ([]) für diesen Beitrag ersetzt. Hier

ist der Stack-Trace:

[TypeLoadException: ID8030: The value of the 'type' property could not be parsed. *** element is correct.] 
System.IdentityModel.Configuration.TypeResolveHelper.Resolve(ConfigurationElementInterceptor customTypeElement, Type customType) +602659 
System.IdentityModel.Configuration.IdentityConfiguration.GetIssuerNameRegistry(IssuerNameRegistryElement element) +114 
System.IdentityModel.Configuration.IdentityConfiguration.LoadHandlerConfiguration(IdentityConfigurationElement element) +841 
System.IdentityModel.Configuration.IdentityConfiguration.LoadConfiguration(IdentityConfigurationElement element) +117 
System.IdentityModel.Configuration.IdentityConfiguration..ctor(String identityConfigurationName) +180 
System.IdentityModel.Services.Configuration.FederationConfiguration.LoadConfiguration(FederationConfigurationElement element) +392 
System.IdentityModel.Services.Configuration.FederationConfiguration..ctor(Boolean loadConfig) +94 
System.IdentityModel.Services.FederatedAuthentication.CreateFederationConfiguration() +71 
System.IdentityModel.Services.FederatedAuthentication.get_FederationConfiguration() +85 
System.IdentityModel.Services.HttpModuleBase.Init(HttpApplication context) +56 
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +418 
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172 
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336 
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296 

[HttpException (0x80004005): ***... element is correct.] 
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9873784 
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101 
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254 
+0

Dies ist nicht genau die Antwort auf Ihre Frage, aber es kann Ihnen trotzdem helfen. Haben Sie darüber nachgedacht, den Identity Model Wrapper von Thinktecture zu verwenden? Ich hatte einen guten Erfolg damit und es ermöglicht Ihnen, programmgesteuert mehr zu konfigurieren als der Core-.NET-Code, der Sie von Ihren Konfigurationsproblemen wegbringt. [Identity Model Nuget Paket] (http://www.nuget.org/packages/Thinktecture.IdentityModel) – Nathan

+0

Danke, ich werde das versuchen und sehen, wie es geht. sieht gut aus :) – MPavlak

Antwort

2

Ich lief in das gleiche Problem, aber es war konstant für mich, nicht sporadisch, so vielleicht ein anderes zugrunde liegende Wurzel Problem.

Ich konnte das Problem jedoch beheben, indem Sie das folgende NuGet Pakets in meinem MVC 4 Projekt Installation: http://www.nuget.org/packages/System.IdentityModel.Tokens.ValidatingIssuerNameRegistry/

Ich kann mich nicht daran erinnern, ob dies standardmäßig in einem neuen MVC 4-Projekt hinzugefügt wurde. Ich habe es an einer Stelle entfernt, so dass es möglicherweise entfernt wurde und dann die Neuinstallation das Problem behoben hat. So oder so, indem ich das obige Paket hinzufüge, konnte ich mein MVC 4 Projekt richtig mit ACS arbeiten lassen.

Hoffe es funktioniert auch für Sie.

17

Ich hatte das gleiche Problem, wenn lokal ausgeführt wird. Ich habe die Anleitung hier gefunden: http://msdn.microsoft.com/en-us/library/jj161104.aspx und würde den Typ nicht gefunden Fehler auf dieser Baugruppe erhalten.

Ich habe überprüft, um sicherzustellen, dass ich die Baugruppe über NuGet heruntergezogen und sogar deinstalliert und neu installiert habe ... keine Würfel. Es besteht im Wesentlichen zu einem fehlenden Verweis auf die System.IdentityModel.Tokens.ValidatingIssuerNameRegistry

So kocht, wenn Sie diese über NuGet nach unten ziehen und haben Sie immer noch das Problem haben, dass erinnern, wenn NuGet dieses Paket fällt, wird es Wirf es in einen Paketordner, der sich auf der Lösungsebene im Dateisystem befindet.

Wenn Ihr Projekt zeigt keinen Hinweis auf System.IdentityModel.Tokens.ValidatingIssuerNameRegistry, die Versammlung zu einem Projekt mit dem rechten fügen Sie das Projekt klicken, wählen Sie Verweis hinzufügen, Durchsuchen, dann auf die Schaltfläche Durchsuchen klicken und dann blättern bis zum Paket-Ordner und finden Sie die DLL ([Ihre Lösung Root] Pakete \ System.IdentityModel.Tokens.ValidatingIssuerNameRegistry.4.5.1 \ lib \ net45) und fügen Sie es hinzu.

Ich hoffe, das hilft.

0

Ich hatte gerade das gleiche Problem. Eine Möglichkeit, dies zu lösen, besteht darin, einen Verweis auf die in den anderen Posts angegebene DLL hinzuzufügen.

Eine weitere Option ist der Abschnitt mit diesem zu ersetzen, die eine Klasse zur Verfügung im Kern .Net Framework verwendet 4,5 (Sie müssen einen Verweis auf System.IdentityModel auch hinzufügen):

<issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
    <trustedIssuers> 
    <add thumbprint="[print]" name="[issuer]" /> 
    </trustedIssuers> 
</issuerNameRegistry> 
Verwandte Themen