2016-08-22 5 views
0

J'ai un projet WCF avec AAPC et j'ai publié ce service et l'application MVC dans mon serveur IIS, mais il est lancer une erreur lors de l'appel au service de l'application Webproblème lorsque vous utilisez un service WCF dans mvc

système .ServiceModel.Security.SecurityNegotiationException: L'appelant n'a pas été authentifié par le service. ---> System.ServiceModel.FaultException: La demande de jeton de sécurité n'a pas pu être satisfaite car l'authentification a échoué.

Ceci est mon service web.config

<system.serviceModel> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    <services> 
     <service name="Csla.Server.Hosts.WcfPortal" behaviorConfiguration="returnFaults"> 
     <endpoint binding="wsHttpBinding" bindingConfiguration="wsHttpBinding_IWcfPortal" contract="Csla.Server.Hosts.IWcfPortal" /> 
     </service> 
     <service name="Csla.Server.Hosts.Mobile.WcfPortal" behaviorConfiguration="returnFaults"> 
     <endpoint binding="basicHttpBinding" bindingConfiguration="basicHttpBinding_IWcfPortal" contract="Csla.Server.Hosts.Mobile.IWcfPortal" /> 
     </service> 
    </services> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="basicHttpBinding_IWcfPortal" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647" maxBufferSize="2147483647"> 
      <readerQuotas maxBytesPerRead="2147483647" maxArrayLength="2147483647" maxStringContentLength="2147483647" maxNameTableCharCount="2147483647" maxDepth="2147483647" /> 
     </binding> 
     </basicHttpBinding> 
     <wsHttpBinding> 
     <binding name="wsHttpBinding_IWcfPortal" maxReceivedMessageSize="2147483647"> 
      <readerQuotas maxBytesPerRead="2147483647" maxArrayLength="2147483647" maxStringContentLength="2147483647" maxNameTableCharCount="2147483647" maxDepth="2147483647" /> 
     </binding> 
     </wsHttpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="returnFaults"> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
      <serviceMetadata httpGetEnabled="true" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 

Je consomme ce service dans mon MVC web.config comme ça.

<add key="CslaAuthentication" value="Csla" /> 
<add key="CslaDataPortalProxy" value="Csla.DataPortalClient.WcfProxy, Csla" /> 
<add key="CslaDataPortalUrl" value="http://www.someurl.net/WcfFullPortal.svc" /> 

Ensuite, après avoir appelé le service directement à partir de mon projet de service, cela fonctionnait correctement.

<add key="CslaDataPortalUrl" value="http://localhost:11170/WcfFullPortal.svc" /> 

Et aussi essayé avec une adresse IP PUBLIEES, qui travaille aussi bien

<add key="CslaDataPortalUrl" value="http://10.4.56.75/WcfFullPortal.svc" /> 

Seul problème lorsque j'utilise le nom d'hôte publié (http://www.someurl.net/WcfFullPortal.svc). Et j'ai ouvert cette URL dans le navigateur qui fonctionnait.

Répondre

0

Ajoutez la configuration de liaison suivante juste après la section dans la section web.config <system.serviceModel>.

<bindings> 
     <wsHttpBinding> 
      <binding name="TheBindingConfig"> 
       <security mode="None" /> 
      </binding> 
     </wsHttpBinding> 
    </bindings> 
+0

Merci @Ray pour votre relecture. Mais cela ne fonctionne pas pour moi. Il montre la même erreur. – Nitheesh

+0

lorsque vous trouvez une solution, pouvez-vous partager avec moi? Merci – Ray

+0

J'ai résolu ce problème. S'il vous plaît trouver cela ci-dessus. – Nitheesh

0

Changer juste Csla.DataPortalClient.WcfProxy à Csla.DataPortalClient.HttpProxy et <add key="CslaDataPortalUrl" value="http://www.someurl.net/WcfFullPortal.svc" />-<add key="CslaDataPortalUrl" value="http://www.someurl.net/DataPortal/PostAsync" />

Et ajoutez également

protected void Application_AuthenticateRequest(Object sender, EventArgs e) 
     { 
      HttpContext.Current.User = new Csla.Security.UnauthenticatedPrincipal(); 
     } 

dans Global.asax.cs