(401 non autorisé d'erreur : sécurité WCF/liaison
J'ai un service web WCF, et un client à la fois sur la même machine. Accéder au service web WCF directement en utilisant le navigateur fonctionne, mais le client ne peut pas se connecter; message d'erreur ci-dessous. Des idées? Intégrée de l'Authentification Windows dans IIS est utilisé à la fois client et serveur.
The remote server returned an error: (401) Unauthorized.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Net.WebException: The remote server returned an error: (401) Unauthorized.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[WebException: The remote server returned an error: (401) Unauthorized.]
System.Net.HttpWebRequest.GetResponse() +5313085
System.ServiceModel.Channels.HttpChannelRequest.WaitForReply(TimeSpan timeout) +54
[MessageSecurityException: The HTTP request is unauthorized with client authentication scheme 'Negotiate'. The authentication header received from the server was 'Negotiate,NTLM'.]
System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +7594687
System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +275
HRPaysService.IService1.GetAlert() +0
HRPaysService.Service1Client.GetAlert() +15
_Default.Page_Load(Object sender, EventArgs e) +138
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
Client:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="basicBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows"
proxyCredentialType="Windows" realm="" />
<message clientCredentialType="UserName"
algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint
address="http://hrpaysservice/service1.svc"
binding="basicHttpBinding"
bindingConfiguration="basicBinding"
contract="HRPaysService.IService1">
</endpoint>
</client>
</system.serviceModel>
Serveur:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="basicBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows"
proxyCredentialType="Windows" realm="" />
<message clientCredentialType="UserName"
algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint
address="http://hrpaysservice/service1.svc"
binding="basicHttpBinding"
bindingConfiguration="basicBinding"
contract="HRPaysService.IService1">
</endpoint>
</client>
</system.serviceModel>
est-ce votre client une application Silverlight, par hasard?? Ces travaux de façon très différente à partir d'un ASP.NET ou Winforms/WPF application.
Non, pas une application Silverlight.
Non, pas une application Silverlight.
OriginalL'auteur xt_20 | 2010-02-05
Vous devez vous connecter pour publier un commentaire.
J'ai rencontré la même erreur quand j'ai essayé d'accéder à un service WCF hébergé sur IIS via l'ajout d'un "Service de Référence" de mon application Windows Forms. Mais lorsque le client atteint un appel à une méthode de service, j'ai eu "non autorisée 401 exception". Voici ma solution à ce problème:
(1) j'ai été en utilisant [wsHttpBinding] interrupteur à être [basicHttpBinding] comme suit dans le service WCF fichier de config:
(2) Ajouter un "Service de Référence" à partir de votre application client et lui donner un nom (nous allons utiliser ce nom dans l'étape suivante "ProxyCalssName")
(3) réglez l'application.fichier de configuration de l'application client comme suit:
(4) Dans le code-behind de l'Application client:
Bonne Chance, DigitalFox
Après avoir essayé d'obtenir wsHttpBinding le travail après plusieurs heures, j'ai finalement cédé et j'ai essayé cette suggestion et j'ai finalement obtenu que le service fonctionne. J'aimerais savoir ce qui ne va pas avec wsHttpBinding, bien que, depuis que j'ai ce que je comprends, il ne devrait pas avoir de problèmes.
OriginalL'auteur DigitalFox
Client:
Serveur:
OriginalL'auteur xt_20
Vous avez une CrossDomain.xml document mis en place dans votre application web des services? Si pas, créez-en un avec le contenu suivant -
Disons que votre service est sur abc.com et que vous faites un appel de client sur xyz.com, donc ici un appel xyz.com d'un autre domaine abc.com. C'est la croix de domaine problème et pour le résoudre, nous devons créer une crossdomain.xml et de mettre le code ci-dessus et de mettre ce fichier dans le dossier bin de votre service d'accueil dans abc.com serveur
OriginalL'auteur Craig Schwarze
Si le répertoire Virtuel de services WCF n'est pas configuré pour l'accès anonyme, puis le "mex" point de terminaison doit être supprimé.
Vous avez posté 2 différents jeux de configs et il semble y avoir incompatibilité. Pourriez-vous poster les configs qui est à l'origine de l'erreur ?
Votre première (en haut) de la configuration du client et la dernière dans la configuration du serveur (sans le mex partie).
OriginalL'auteur Subbu