Question

Ce qui est arrivé deux ou trois fois pour me connaître. Si j'ajoute de nombreuses années OperationContract à un ServiceContract, l'application de test WCF client lance une exception:

« Impossible d'ajouter un service. Métadonnées service peut ne pas être accessibles. Assurez-vous que votre service est en cours d'exécution et d'exposer les métadonnées. »

Dans les détails, il continue:

Erreur: Impossible d'obtenir des métadonnées à partir. La demande a échoué avec l'état HTTP 400:. Bad Request

Si je retire deux contrats d'exploitation alors tout va bien. En dehors du client de test est aussi très bien.

Était-ce utile?

La solution 2

Merci pour les réponses.

Ce sont les lignes incriminées:

<OperationContract(), FaultContract(GetType(WcfService.Common.DefaultFaultContract))> _
Function GetJobSubTypesForJobTypeList(ByVal jobTypeList As Dictionary(Of Integer, String)) As List(Of JobSubTypeOfJobTypeDTO)

<OperationContract(), FaultContract(GetType(WcfService.Common.DefaultFaultContract))> _
Function GetActivityTypesForJobTypeList(ByVal jobTypeList As Dictionary(Of Integer, String)) As List(Of ActivityTypeOfJobTypeDTO)

Il est avéré que nous manquions setters dans les types de retour (DTO) et un constructeur par défaut.

Autres conseils

Pourriez-vous être plus précis sur ce genre d'opérations que vous devez retirer du contrat de service pour le faire fonctionner?

Voici quelques limitations connues dans le WcfTestClient.exe outil qui vient avec le .NET Framework 3.5 SDK. Notez que tous ces problèmes ont été résolus dans la version livrée avec .NET 3.5 SP1.

  • Le client ne maintient pas une session avec le service appelé. Tous les appels sont faits sur de nouvelles instances de proxy
  • Le fichier généré automatiquement la configuration pour le proxy client peut être consulté mais pas modifié
  • Services à l'aide du ne peut être invoqué sérialiseur XML au lieu de sérialiseur de contrat de données
  • Services en utilisant Contrats de message ne peut pas être invoqué

Ceci est l'un des problèmes les plus étranges que j'ai rencontré. Vous pourriez avoir à vérifier votre code et regarder pour des problèmes tels que:

Private _NetPay As Boolean
<DataMember()> _
Public Property NetPay() As Boolean
    Get
        Return _Amount = 0
    End Get
    Set(ByVal value As Boolean)
        _NetPay = value
    End Set
End Property

J'avais défini un DataMember comme ci-dessus. Notez le statment de retour. Il tente de retourner une valeur calculée. J'ai enlevé ce membre de données; il a bien fonctionné.

est ce que je devais ajouter à mon devenv.exe.config afin d'obtenir mon client test WCF pour travailler avec un service très important. Je devais alors redémarrer mon IDE. Cela peut ne pas être ce que vous cherchez, mais j'espère que ça aide.

<system.serviceModel>
  <bindings>
    <customBinding>
      <binding name="MyBinding">
        <textMessageEncoding>
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
        </textMessageEncoding>
        <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647"/>
      </binding>
    </customBinding>
  </bindings>
  <client>
    <endpoint binding="customBinding" bindingConfiguration="MyBinding" contract="IMetadataExchange" name="http"/>
  </client>
</system.serviceModel>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top