0
votes

Vérification si un service WCF est appelé

J'ai construit un service WCF à l'aide de C # qui fonctionne sur Windows Server 2016.

J'ai besoin de savoir quand cette WCF a été appelée à partir du client et qui l'a appelée (par exemple, la propriété intellectuelle)

Y a-t-il un moyen de faire cela? J'ai essayé de vérifier le spectateur d'événements et l'IIS, mais n'a pas appris à savoir comment. Merci


1 commentaires

Les fichiers journaux IIS doivent vous donner des données initiales à ce sujet, support.microsoft.com/en-ca/help/943891/... Si vous voulez plus, les réponses ci-dessous fournissent plus loin informations.


3 Réponses :


3
votes

Vous devez vraiment utiliser une sorte de cadre de journalisation (log4net, Nlog, MS Enterprise Library Logger ...),

Cela vous permettra de vous connecter à un fichier texte, de courrier électronique, du journal des événements ou de la base de données, et vous pourrez tout d'abord que vous puissiez tout de même documenter toute erreur / exception projetée à partir de votre code afin que vous puissiez enquêter et résoudre des bogues, plus vous. Peut également inclure également les entrées de journal des informations / Verbose pour capturer, comme vous le dites, appelant IP et horodatage, ainsi que des paramètres d'appel, si vous le souhaitez et que vous devez le faire.


1 commentaires

Voir aussi Interface IServiceBehavior . Si vous combinez le cadre de journalisation avec cela, vous aurez une extension WCF qui vous permettra de connecter l'accès à n'importe quel service WCF sans modifier le service d'origine.



1
votes

Enregistrement de chaque requête Me meilleure chose que vous pouvez faire. Si vous voulez savoir comment obtenir une adresse IP du client dans WCF, la méthode ci-dessous fonctionnera pour vous. Ensuite, vous pouvez enregistrer cette adresse IP, la demande de requête, etc.

public string GetClientIp()
{
  OperationContext operationContext = OperationContext.Current;
  MessageProperties messageProps = operationContext.IncomingMessageProperties;
  RemoteEndpointMessageProperty endpointProps = (RemoteEndpointMessageProperty)messageProps[RemoteEndpointMessageProperty.Name];

  return endpointProps.Address;
}


0 commentaires

1
votes

Vous pouvez essayer existant connectez les appels de service WCF avec les informations de paramètre Journalisation avec System.Diagnostics Configuration

ou créer une implémentation personnalisée pour ioperationinvoker comme ici Connectez les appels de service WCF avec les informations de paramètre


0 commentaires