2009-01-29 8 views
0

J'ai du mal à déployer un site Web sur IIS 7 sous Windows Server 2008. Le site fonctionne correctement jusqu'à ce qu'il tente d'appeler un service WCF hébergé sur le serveur. même hôte.Asp.net ne s'authentifie pas contre le service wcf sur le serveur 2008

Tout fonctionne très bien pour le service de mon poste de travail lorsque le web est exécuté dans Visual Studio 20008 en utilisant la Dès que je Déployé exactement la même configuration web, etc le web dans un répertoire virtuel sur le serveur Bam. Erreurs d'authentification Il fonctionne également tel quel lorsque les deux sont déployés sur un serveur Windows 2003. Qu'est-ce que est différent à propos de Server 2008 qui provoque cela? AIDEZ-MOI! S'il vous plaît.

Dans le cas où il est important, toutes les opérations de service nécessitent l'appartenance à un groupe Active Directory pour l'utilisateur authentifié de la page de ASP.net et sont enjolivées: [PrincipalPermission (SecurityAction.Demand, Rôle = "SOAMemberShipService")]

je reçois l'erreur suivante à partir du site Web:

la demande de jeton de sécurité ne pouvait pas être satisfaite, car l'authentification a échoué. Description: Une exception non gérée s'est produite lors de l'exécution de la requête Web en cours. Veuillez consulter la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails d'exception: System.ServiceModel.FaultException: La demande de jeton de sécurité n'a pas pu être satisfaite car l'authentification a échoué.

Source Erreur:

Ligne 919: Ligne 920
: public HSMembersService.MemberSearchResult SearchMembers (HSMembersService.MemberSearch MemberInfoToSearch) { Ligne 921: base.Channel.SearchMembers de retour (MemberInfoToSearch); Ligne 922:} Ligne 923:}

Source fichier: c: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Temporary ASP.NET Files \ csrweb \ a4d18657 \ a6d0910d \ App_WebReferences.jgx1svpr.0. cs ligne: 921

Stack Trace:

[FaultException. La demande de jeton de sécurité ne pouvait pas être satisfaite car l'authentification a échoué] System.ServiceModel.Security.SecurityUtils.ThrowIfNegotiationFault (message message, cible EndpointAddress) + 6375432 System.ServiceModel.Security.IssuanceTokenProviderBase`1.ThrowIfFault (Message, EndpointA cible DRESSE) +25 de System.ServiceModel.Security.SspiNegotiationTokenProvider.GetNextOutgoingMessageBody (message incomingMessage, SspiNegotiationTokenProviderState sspiState) +173

[SecurityNegotiationException. L'appelant n'a pas été authentifié par le service] System.Runtime.Remoting.Proxies. RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg) +4596611 & System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData MSGDATA, le type Int32) +1713 HSMembersService.IHSMembersService.SearchMembers (ReliésMême MemberInfoToSearch) 0 HSMembersService.HSMembersServiceClient .SearchMembers (MemberSearch MemberInfoToSearch) dans c: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ Te Fichiers mscary ASP.NET \ csrweb \ a4d18657 \ a6d0910d \ App_WebReferences.jgx1svpr.0.cs: 921 _default.btnSearch_Click (expéditeur d'objet, EventArgs e) dans e: \ CSRWeb \ default.aspx.cs: 114 System.Web.UI.WebControls.Button.OnClick (EventArgs e) +131 System.Web.UI.WebControls.Button.RaisePostBackEvent (String eventArgument) +140 System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler SourceControl, String eventArgument) +39 System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 3215

ASP.net site web de web.config (partie de service pertinente):

services web.config:

<!-- Service Endpoints --> 
    <!-- Unless fully qualified, address is relative to base address supplied above --> 
    <endpoint address ="" binding="wsHttpBinding" contract="HSMembersService.IHSMembersService" bindingConfiguration="wsHttpBindingConfig"> 
     <!-- 
      Upon deployment, the following identity element should be removed or replaced to reflect the 
      identity under which the deployed service runs. If removed, WCF will infer an appropriate identity 
      automatically. 
     --> 
     <!--<identity> 
     <dns value="localhost"/> 
     </identity>--> 
    </endpoint> 
    <!-- Metadata Endpoints --> 
    <!-- The Metadata Exchange endpoint is used by the service to describe itself to clients. --> 
    <!-- This endpoint does not use a secure binding and should be secured or removed before deployment --> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
    </service> 
</services> 
<bindings> 
    <wsHttpBinding> 
    <binding name="wsHttpBindingConfig" > 
     <security mode="Message"> 
     <message clientCredentialType="Windows" /> 
     </security> 

    </binding> 
    </wsHttpBinding> 
</bindings> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="HSMembersService.HSMembersServiceBehavior"> 
     <!-- To avoid disclosing metadata information, 
     set the value below to false and remove the metadata endpoint above before deployment --> 
     <serviceMetadata httpGetEnabled="True"/> 

     <serviceAuthorization principalPermissionMode="UseWindowsGroups"   /> 
     <!-- To receive exception details in faults for debugging purposes, 
     set the value below to true. Set to false before deployment 
     to avoid disclosing exception information --> 
     <serviceDebug includeExceptionDetailInFaults="True" /><!-- Change this before deployment --> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

Répondre

0

D'accord, pas de réponse ici, ni sur les groupes d'abonnement MSDN.

Donc, j'ai tout essayé. Et je veux dire tout. Après ce qui a semblé être plusieurs jours mais en réalité c'était probablement seulement 20 heures, ça marche! Tout ce que j'ai fait, c'était de déplacer le chemin physique des fichiers de services, c'est-à-dire .dll, .svc etc, vers un répertoire hors de mon c: root par rapport à wwwroot et cela a fonctionné. J'ai dû mettre à jour mon répertoire virtuel pour le pointer bien sûr.

Pourquoi cet emplacement a-t-il causé un problème? Est-ce que IIS7.0/Windows Server 2008 modifie quelque chose qui ne permet pas le déploiement de services à partir d'un emplacement physique de wwwroot? Je ne le découvrirai probablement jamais car je n'essaierai jamais de déployer un autre service à partir de là.

J'ai triplé toutes les autorisations de compte/répertoire et celles du nouveau chemin physique sont identiques à celles de l'ancien chemin physique, donc pas bon.

Si quelqu'un découvre pourquoi ou sait pourquoi. S'il vous plaît laissez-moi/nous savoir.

Merci,

Eddie

0

Il pourrait être lié à this.

Questions connexes