Cela pourrait être dû au fait que le protocole HTTP n'est pas utilisé pour la liaison de fin de service.

j'ai un Service WCF qui fonctionne très bien sur ma machine locale. Je l'ai mis sur les serveurs, et je reçois l'erreur suivante:

une erreur s'est produite lors de la réception du Réponse HTTP à http://xx.xx.x.xx:8200/Services/WCFClient.svc . Cela pourrait être dû au service liaison des paramètres N'utilisant pas le protocole HTTP protocole. Cela pourrait également être dû à une Le contexte de la requête HTTP étant interrompu par le serveur (peut-être due à la service de l'arrêt). Voir serveur les journaux pour plus de détails.]

je suis allé au service dans l'url et il fonctionne correctement. Tout ce que je fais pour la fonction est de retourner une chaîne de caractères à un nom d'image, de sorte que les données transmises ne sont pas beaucoup. J'ai tracé le journal et il me donne la même information. Voici mon config client:

<binding name="basicHttpBinding_IWCFClient" closeTimeout="00:01:00"
         openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
         bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
         maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
         messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
         allowCookies="false">
    <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
                  maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
                  maxNameTableCharCount="2147483647" />
    <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
    </security>
</binding>
<endpoint name="basicHttpBinding_IWCFClient" 
    address="http://localhost:4295/Services/WCFClient.svc"
    binding="basicHttpBinding" 
    bindingConfiguration="basicHttpBinding_IWCFClient" 
    behaviorConfiguration="WCFGraphicManagementTool.Services.ClientBehavior"
    contract="WCFClient.IWCFClient" />

Voici la configuration de mon serveur:

<service behaviorConfiguration="WCFGraphicManagementTool.Services.WCFClientBehavior"
    name="WCFGraphicManagementTool.Services.WCFClient">
   <endpoint name="basicHttpBinding_IWCFClient"
       address="" 
       binding="basicHttpBinding" 
       contract="WCFGraphicManagementTool.Contracts.IWCFClient" />
   <endpoint 
       address="mex" 
       binding="mexHttpBinding" 
       contract="IMetadataExchange" />
</service>
<behavior name="WCFGraphicManagementTool.Services.WCFClientBehavior">
   <dataContractSerializer maxItemsInObjectGraph="2147483647" />
   <serviceThrottling maxConcurrentCalls="120" maxConcurrentSessions="120"
                      maxConcurrentInstances="120" />
   <serviceMetadata httpGetEnabled="true" />
   <serviceDebug includeExceptionDetailInFaults="true" />
</behavior>

serait-ce un cadre sur le serveur, car il fonctionne sur ma machine locale?

76
demandé sur abatishchev 2011-05-03 18:24:46

20 réponses

je pense qu'il y a un problème de sérialisation, vous pouvez trouver l'erreur exacte juste besoin d'Ajouter ci-dessous le code dans la configuration de service dans la section <configuration> .

après mise à jour de la configuration "App_tracelog.svclog" le fichier va créer, où votre service existent juste besoin d'ouvrir .svclog fichier et de trouver la ligne de couleur rouge sur le panneau latéral gauche qui est une erreur et voir sa description pour plus d'informations.

j'espère que cela vous aidera à trouver votre erreur.

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
        <listeners>
          <add name="ServiceModelTraceListener" />
        </listeners>
      </source>
      <source name="System.ServiceModel" switchValue="Verbose,ActivityTracing">
        <listeners>
          <add name="ServiceModelTraceListener" />
        </listeners>
      </source>
      <source name="System.Runtime.Serialization" switchValue="Verbose,ActivityTracing">
        <listeners>
          <add name="ServiceModelTraceListener" />
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add initializeData="App_tracelog.svclog" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" name="ServiceModelTraceListener" traceOutputOptions="Timestamp" />
    </sharedListeners>
  </system.diagnostics>
83
répondu Rikin Patel 2015-12-30 05:16:37

j'ai eu ce problème: "Cela pourrait être dû au point de terminaison de service de liaison de ne pas utiliser le protocole HTTP", et le service WCF serait arrêté (dans une machine de développement)

j'ai compris: dans mon cas, le problème était à cause D'Énums,

j'ai résolu en utilisant ce

    [DataContract]
    [Flags]
    public enum Fruits
    {
        [EnumMember]
        APPLE = 1,
        [EnumMember]
        BALL = 2,
        [EnumMember]
        ORANGE = 3 

    }

j'ai dû décorer mes Enums avec DataContract, drapeaux et tous chacun des membres d'Enum avec des attributs Enumember.

I résolu après avoir examiné ce référence msdn :

72
répondu Rajesh 2012-08-11 19:12:39

j'ai eu cette même erreur et le problème était la sérialisation. J'ai réussi à trouver le vrai problème en utilisant le Service Trace Viewer http://msdn.microsoft.com/en-us/library/ms732023.aspx et résolu facilement. Peut-être que cela aidera quelqu'un.

16
répondu 100r 2012-01-26 08:06:51

dans mon cas, l'erreur a été générée parce qu'un de mes types complexes avait une propriété sans méthode définie.

le serializer a lancé et exception à cause de ce fait. Ajout de méthodes internes et tout a bien fonctionné.

la meilleure façon de savoir pourquoi cela se produit (à mon avis) est d'activer l'enregistrement des traces.

j'ai réalisé ceci en ajoutant la section suivante à mon web.config:

    <system.diagnostics>
    <sources>
      <source name="System.ServiceModel.MessageLogging" switchValue="Warning,ActivityTracing">
        <listeners>
          <add name="traceListener"
               type="System.Diagnostics.XmlWriterTraceListener"
               initializeData= "c:\log\Traces.svclog" />
          <add type="System.Diagnostics.DefaultTraceListener" name="Default" />
        </listeners>
      </source>
      <source propagateActivity="true" name="System.ServiceModel" switchValue="Verbose,ActivityTracing">
        <listeners>
          <add name="traceListener"
               type="System.Diagnostics.XmlWriterTraceListener"
               initializeData= "c:\log\Traces.svclog" />
          <add type="System.Diagnostics.DefaultTraceListener" name="Default" />
        </listeners>
      </source>
    </sources>
    <trace autoflush="true" />
  </system.diagnostics>

une fois réglé, j'ai couru mon client, j'ai fait exception et vérifié les Traces.svclog fichier. De là, j'avais juste besoin de trouver l'exception.

10
répondu Stuart 2015-01-29 19:09:20

Solution avec DataContract, les drapeaux pour Enums semble un peu laid. Dans mon cas, le problème a été résolu en ajoutant quelque chose comme "NotSet = 0" dans enum:

public enum Fruits
{
  UNKNOWN = 0,
  APPLE = 1,
  BALL = 2,
  ORANGE = 3 
}
8
répondu b1n0m 2013-02-25 06:45:51

j'ai résolu le problème. Il a fini par être un chemin vers mon fichier de configuration était faux. Les erreurs pour WCF sont si utiles parfois.

1
répondu Matt Schubert 2011-05-16 13:42:22

j'ai vu cette erreur causée par une référence circulaire dans le graphe objet. L'ajout d'un pointeur vers l'objet parent d'un enfant fera boucler le sérialiseur et, en fin de compte, dépassera la taille maximale du message.

1
répondu Mark Challen 2013-03-12 16:47:20

j'ai eu ce problème parce que j'ai configuré mon Service WCF pour retourner un système.Données.DataTable.

cela a bien fonctionné dans ma page HTML test, mais a explosé quand je l'ai mis dans mon application Windows Form.

j'ai dû entrer et changer la signature du Contrat opérationnel du Service de datable à DataSet et retourner les données en conséquence.

Si vous avez ce problème, vous pouvez ajouter un autre Contrat Opérationnel de votre Service de sorte que vous n'avez pas à vous soucier de briser le code qui dépendent des Services existants.

1
répondu jp2code 2013-09-30 21:45:24

cela pourrait être dû à de nombreuses raisons; ci-dessous sont quelques-unes de ceux:

  1. si vous utilisez des objets de contrat de données complexes (c'est-à-dire des objets personnalisés avec plus d'enfants), assurez-vous que vous avez tous les objets personnalisés décorés avec les attributs DataContract et DataMember
  2. si vos objets data contract utilisent l'héritage, assurez-vous que toutes les classes de base possèdent les attributs DataContract et DataMember. Aussi, vous devez avoir les classes de base spécifient les classes dérivées avec [KnownType(typeof(BaseClassType))] attribut ( voir plus d'informations ici sur ce ).

  3. assurez-vous que toutes vos propriétés d'objet de contrat de données ont les propriétés get et set.

1
répondu Sujeewa 2017-05-23 11:55:03

mon problème était que trop d'éléments étaient transmis entre le client et le serveur. J'ai dû modifier ces paramètres dans le comportement des deux côtés.

<dataContractSerializer maxItemsInObjectGraph="2147483646"/>
1
répondu Rob Sedgwick 2014-12-09 17:38:47

Pour plus d'informations sur cette question, voir aussi: une connexion existante a été fermée de force par l'hôte distant - WCF

Mon problème a fini par être que mes objets de transfert de données étaient trop complexes. Commencez avec des propriétés simples comme public long Id { get; set; } et une fois que vous obtenez ce travail que commencer à ajouter des choses supplémentaires si nécessaire.

1
répondu Serj Sagan 2017-05-23 12:10:29

mon problème était, ce type de retour de mon service était chaîne. Mais j'ai retourné la chaîne de caractères de type xml:

<reponse><state>1</state><message>Operation was successfull</message</response>

ainsi l'erreur fut jetée.

1
répondu joettriscik 2016-05-13 18:17:24

cette erreur peut être due à une inadéquation du contrat. Examinez les trois couches d'application ci-dessous...

couche UI

/

Couche De Procédé

/

Couche D'Accès Aux Données

- >Contrat entre le processus et la couche UI a le même enum avec absent (Onhold = 3). Enum: Démarrer = 1, Arrêt = 2. - >Le contrat entre L'accès aux données et la couche de traitement a déjà été signé: Start = 1,Arrêt = 2,Onhold = 3.

dans ce cas, nous obtiendrons la même erreur dans la réponse de la couche process.

la même erreur se retrouve dans d'autres contrats inadéquats dans les applications multicouches.

0
répondu Abhijit Kumar 2013-05-09 04:25:46

cela pourrait ne pas être pertinent pour votre problème spécifique, mais le message d'erreur que vous avez mentionné a plusieurs causes, l'une d'entre elles est l'utilisation d'un type de retour pour un [Operation Contract] qui est soit abstrait, interface, ou non connu du code client WCF.

Vérifier le poteau (et la solution) en dessous de

https://stackoverflow.com/a/5310951/74138

0
répondu modeeb 2017-05-23 12:26:10

je pense que la meilleure façon de résoudre cela est de suivre les conseils d'erreur, donc de chercher des journaux de serveur. Pour activer logs j'ai ajouté

 <system.diagnostics>
    <sources>
      <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
        <listeners>
          <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData="c:\logs\TracesServ_ce.svclog" />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

alors vous allez à c:\logs\TracesServ_ce.svclog l'ouvrir avec microsoft visionneuse de trace de service. Et voir ce que le problème est vraiment.

0
répondu Lomithrani 2015-07-06 08:34:23

j'ai lutté avec cela pendant quelques jours et essayé chaque réponse de ce post et beaucoup d'autres et de partager ma solution parce que les symptômes étaient les mêmes, mais le problème était différent.

le problème était que le pool de l'application était configuré avec une limite de mémoire et qu'il est simplement recyclé après une période de temps variable.

Espérons que cela aide quelqu'un d'autre!

Salutations,

0
répondu Gonza Oviedo 2015-09-10 14:30:57

dans mon cas

mon service a la fonction de download Files

et cette erreur ne s'est manifestée qu'en essayant de télécharger Big Files

donc j'ai trouvé cette réponse pour augmenter maxRequestLength à la valeur nécessaire dans web.config

je sais que c'est bizarre, mais problème résolu

si vous n'effectuez aucune opération de téléchargement peut-être que cette réponse ne vous aidera pas

0
répondu Basheer AL-MOMANI 2017-05-23 12:34:41

avait également ce problème et il était dû à oublier de décorer mon modèle avec DataContract et DataMember attributs

0
répondu Ian Rathbone 2016-09-14 11:33:27

pour moi, les solutions de cette erreur sont très étranges. C'était la question de l'adresse de port de EndpointAddress . Dans Visual studio port adresse de votre fichier (par exemple Service1.svc) et l'adresse du port de votre projet wcf doit être la même que celle que vous donnez dans EndpointAddress . Permettez-moi de vous décrire cette solution en détail.

il y a deux étapes pour vérifier les adresses des ports.

  1. Dans votre projet WCF cliquez avec le bouton droit de la souris sur votre fichier de Service (par exemple Service1.svc) - > que sélectionner voir dans le navigateur maintenant dans votre navigateur vous avez une url comme http://localhost:61122/Service1.svc alors notez maintenant votre adresse de port comme un 61122

  2. cliquez sur votre projet FMC - > que sélectionner propriétés - > aller à la Web Tab - > maintenant dans section des serveurs - > sélectionnez utilisez Visual Studio Development Server - > sélectionnez port spécifique et donnez l'adresse du port que nous avons trouvé précédemment à partir de notre Service1.svc service. C'est (61122) .

plus tôt, j'ai une adresse de port différente. Après avoir spécifié correctement l'adresse du port que j'ai donnée dans EndpointAddress , mon problème a été résolu.

j'espère que ceci pourrait être résolu votre problème.

0
répondu Dilip0165 2016-10-14 09:38:02
-1
répondu SarjanWebDev 2013-01-17 01:42:42