2010-10-15 4 views
1

Je tente de créer un processus qui vérifie les données dans une base de données et informe les utilisateurs des erreurs. Ma pensée initiale était de créer un service Web qui est déclenché lorsque l'utilisateur enregistre le formulaire Web. Ce service Web commencerait le processus de validation des données et remplirait une autre table avec des informations sur les informations qui, à son avis, ne sont pas valides. Dès le début, j'avais l'intention pour ce service Web de revenir instantanément avant la fin de la vérification des données. La vérification des données va être un processus plus long et n'est pas destiné à être une validation de formulaire. C'est également acceptable si cela devait échouer puisque le processus sera rafraîchi tous les soirs, donc je ne suis pas concerné par cela.isOneWay Services WCF

Les services OneWay semblent être le choix le plus logique pour cela. J'ai déjà écrit le service et tout fonctionne très bien sans que OneWay soit présent. Cependant, au moment où j'ajoute OneWay, le processus ne fonctionne plus. Ce qui me dérange particulièrement, c'est que j'ai une ligne qui affiche un fichier journal au tout début de la méthode de service Web et qui écrit parfois le journal lorsque j'appelle le service. Pas à chaque fois, mais parfois. J'ai aussi plusieurs instructions de log qui sont sorties et qui n'ont jamais dépassé la première ligne une fois que isOneWay est activé. Il semble que le code soit simplement arrêté arbitrairement. Est-ce que quelqu'un a déjà rencontré ça auparavant? Ma prochaine option est de créer une tâche de file d'attente réseau qui reçoit l'appel de service Web directement et l'ajoute à sa file d'attente et j'espérais éviter de le faire.

Un peu plus d'information de fond, je suis nouveau aux services de WCF mais pas aux services Web en général. L'application Web est écrite dans ASP.Net et appelle le service Web via HttpGet.

Je suis ouvert à d'autres suggestions d'architecture et toute contribution est grandement appréciée.

est ici l'élément ServiceModel du web.config:

 <system.serviceModel> 
     <bindings> 
     <customBinding> 
      <binding name="WebHttpBinding_Service"> 
      <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" 
       messageVersion="Soap12" writeEncoding="utf-8"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      </textMessageEncoding> 
      <httpTransport authenticationScheme="Negotiate,Ntlm"/> 
      </binding> 
     </customBinding> 
     <webHttpBinding> 
      <binding name="webHttpBinding_IISAuthen"> 
      <security mode="TransportCredentialOnly"> 
       <transport clientCredentialType="Windows" /> 
      </security> 
      </binding> 
     </webHttpBinding> 
     </bindings> 
     <services> 
     <service name="Namespace.Service" behaviorConfiguration="Namepsace.ServiceBehavior"> 
      <endpoint address="" behaviorConfiguration="Namespace.ServiceAspNetAjaxBehavior" 
      binding="webHttpBinding" bindingConfiguration="webHttpBinding_IISAuthen" contract="Namespace.Service" /> 
     </service> 
     </services> 
     <behaviors> 
     <endpointBehaviors> 
      <behavior name="Namespace.ServiceAspNetAjaxBehavior"> 
      <enableWebScript /> 
      </behavior> 
     </endpointBehaviors> 
     <serviceBehaviors> 
      <behavior name="Namespace.ServiceBehavior"> 
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
      <serviceMetadata httpGetEnabled="true" /> 
      <!-- 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="false" /> 
      </behavior> 
     </serviceBehaviors> 
     </behaviors> 
     <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> 
     <client> 
     <endpoint binding="customBinding" bindingConfiguration="WebHttpBinding_Service" 
      contract="Service" name="WebHttpBinding_Service" /> 
     </client> 
    </system.serviceModel> 
+0

Pouvez-vous publier la configuration wcf côté serveur? – softveda

+0

C'est assez basique: je pense que c'est tout ce dont vous avez besoin, laissez-moi savoir si vous voyez des incohérences, j'ai dû supprimer certains des noms. –

+0

notez que vous avez balisé votre question "wfc" au lieu de "wcf" (-:. Juste pour la prochaine fois .. –

Répondre

0

J'ai découvert le problème. Cela peut sembler étrange, mais le service était exécuté dans le même projet et cela semblait poser le problème de l'utiliser comme un service à sens unique. Je l'ai déplacé dans son propre projet tout a fonctionné comme prévu.

Je remercie tout le monde pour leur temps, le tracé s'avérera certainement utile à l'avenir.

1

Lors de l'exécution dans des problèmes comme ceux-ci dans WCF, où quelque chose cesse de fonctionner lors du changement de configuration, je certainement commencer par tracer le service en cours d'exécution. WCF a un grand mécanisme de traçage que vous commencez en éditant la configuration. Vous pouvez tout lire sur la configuration here.

+0

Merci pour cette information, elle s'avérera certainement utile dans le futur. –