2010-06-21 5 views
1

J'essaie d'héberger un service WCF utilisant IIS (fonctionne très bien dans Cassini). Cependant, lorsque je l'héberge dans IIS, j'obtiens l'erreur suivante:Hébergement du service WCF sur IIS

"Une connexion a été établie avec le serveur, mais une erreur est survenue lors du processus de connexion (fournisseur: Shared Memory Provider, erreur: 0 - Aucun processus Je pensais que cela pouvait être dû à l'authentification IIS et Windows, donc j'ai changé la connectiontring pour me connecter directement à la base de données avec un uid et un mot de passe, cela ne fait aucune différence. Je ne pense pas que j'arrive aussi loin, car je m'attendrais à une erreur de sécurité sql si c'était le cas.

J'ai mis en place un nouveau serveur (2008), et encore j'obtenir les mêmes problèmes ...

Quel paramètre pour que je dois mettre en œuvre pour obtenir ce que ça va?

Exemple WCF code

private GenericDataClassesDataContext _db = new GenericDataClassesDataContext(); 

public ReferenceValue[] GetReferenceValues() 
     { 
      try 
      { 
       return _db.ReferenceValues.ToArray(); 
      } 
      catch (Exception e) 
      { 
       throw new FaultException(e.Message); 
      } 
     } 

Web.Config

<?xml version="1.0"?> 
<configuration> 
    <appSettings/> 
    <connectionStrings> 
    <!--<add name="TtasConnectionString" connectionString="Data Source=stdev07;Initial Catalog=Ttas;;uid=srvTtas;pwd=pa$$w0rd;MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/>--> 
    <add name="TTASConnectionString" connectionString="Data Source=STDEV07;Initial Catalog=IRF;Integrated Security=SSPI" providerName="System.Data.SqlClient"/> 
    </connectionStrings> 

    <system.web> 
     <compilation debug="true" targetFramework="4.0"> 
     </compilation> 
     <authentication mode="Windows"/> 
    <identity impersonate="true"/>  
     <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/></system.web> 
    <system.serviceModel> 
     <extensions> 
    <behaviorExtensions> 
    <add name="silverlightFaults" type="Moe.Tactical.GenericData.Wcf.SilverlightFaultBehavior, Moe.Tactical.GenericData.Wcf, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> 
    </behaviorExtensions> 
    </extensions> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
    <behaviors> 
     <endpointBehaviors> 
      <behavior name="SilverlightFaultBehavior"> 
      <silverlightFaults /> 
      </behavior> 
     </endpointBehaviors> 
     <serviceBehaviors> 
      <behavior name="Moe.Tactical.GenericData.Wcf.GenericDataServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <!--<serviceDebug includeExceptionDetailInFaults="false" />--> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <bindings> 
      <basicHttpBinding> 
       <binding name="winAuthBasicHttpBinding"> 
        <security mode="TransportCredentialOnly"> 
         <transport clientCredentialType="Ntlm"/> 
        </security> 
       </binding> 
      </basicHttpBinding> 
     </bindings> 
     <services> 
      <service behaviorConfiguration="Moe.Tactical.GenericData.Wcf.GenericDataServiceBehavior" name="Moe.Tactical.GenericData.Wcf.GenericDataService"> 
       <!--bindingConfiguration="winAuthBasicHttpBinding" [in gap]--> 
       <endpoint address="" 
        binding="basicHttpBinding" 
        behaviorConfiguration="SilverlightFaultBehavior" 
        contract="Moe.Tactical.GenericData.Wcf.IGenericDataService"> 
        <identity> 
         <dns value="localhost:3637"/> 
        </identity> 
       </endpoint> 
       <!--<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>--> 
      </service> 
     </services> 

    </system.serviceModel> 
</configuration> 
+2

Les paramètres dont vous avez besoin sont « SHOW_FULL_EXCEPTION » et « POST_THE_CODE » –

+0

Sur une note de côté, je ne peux pas travailler comment déboguer (je ne peux pas obtenir la pleine exception, et la FaultException n'est pas travailler ...), comme quand je change VS pour utiliser IIS plutôt que cassini, alors j'obtiens l'erreur "Internet Explorer ne peut pas afficher la page Web" –

+0

Voici une pensée: arrêter de manger des exceptions. Débarrassez-vous de ce bloc try/catch entièrement. De cette façon, peut-être qu'il sera enregistré dans le journal des événements Windows. Si ce n'est pas le cas, activez le suivi WCF et réessayez. Cela sera dans le journal de la WCF. –

Répondre

0

Je pense que la raison est dans la ligne suivante de web.config:

<identity impersonate="true"/> 

Vous devrait changer à

<identity impersonate="false"/> 
Questions connexes