“Impossible de trouver le point de terminaison de l'élément avec un nom...”
Désolé pour le long énoncé du problème...j'ai passé deux jours de débogage et ont beaucoup de notes...
J'ai un service de données WCF et un autre processus essayez de vous connecter en tant que client via TCP et/ou HTTP.
J'ai une question TRÈS simple client de test app qui semble se connecter très bien, mais le plus compliqué de la production de l'app ne peut pas se connecter (ni TCP ou HTTP). Dans les deux projets du client, je laisse Visual Studio 2008 générer l'application.config en utilisant la fonction "Ajouter une Référence de Service" et de le laisser tirer des métadonnées du service de données.
Voici le code pour la simple client de test qui fonctionne:
using Client.MyDataService;
namespace Client
{
class Program
{
static void Main(string[] args)
{
MyDataServiceClient client = new MyDataServiceClient("net.tcp");
client.GetRecords();
}
}
}
Voici le code pour la plus compliquée, la production client:
DataServiceManager.cs:
using MyServer.MyDataService;
namespace MyServer.DataServiceBridge
{
class DataServiceManager
{
MyDataServiceClient dataServiceClient = new MyDataServiceClient("net.tcp");
}
}
Dans le processus principal:
DataServiceManager d = new DataServiceManager();
Ici sur l'app.fichier de configuration pour à la fois simple client et de la production client:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="net.tcp" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false"
transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10"
maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
maxReceivedMessageSize="65536">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Transport">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
<message clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://localhost:8888/MyDataService"
binding="netTcpBinding" bindingConfiguration="net.tcp" contract="MyDataService.IMyDataService"
name="net.tcp">
<identity>
<userPrincipalName value="COMPUTER_NAME\Username" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
- Dans Monserveur bin\Debug\ dossier est
MyServer.exe, app.config. - Dans MyDataSeriviceHost bin\Debug\
le dossier est MyDataService.exe,
app.config, et
MyDataSeriviceHost.exe.config.
app.config et
MyDataSeriviceHost.exe.config sont
identiques.
Voici le message d'erreur:
An exception of type 'System.InvalidOperationException' occurred in System.ServiceModel.dll but
was not handled in user code
Additional information: Could not find endpoint element with name 'net.tcp' and contract
'MyDataService.IMyDataService' in the ServiceModel client configuration section.
This might be because no configuration file was found for your application, or because no endpoint
element matching this name could be found in the client element.
Toutes les idées de ce qui se passe? J'ai à peu près épuisé Google. 🙁
Oui, c'était une faute de frappe dans la rédaction de poster ici. Corrigé, merci!
merci de ne pas dupliquer les balises comme "FMC" dans le titre. C'est ce que les balises sont pour.
S'il vous plaît pouvez-vous laisser l'original de l'onu-version expurgée dans l'avenir, si c'est ce que l'une des causes de l'erreur? J'étais à la recherche pour IyDataService et ne pouvait pas voir n'importe où, ce qui était exactement mon problème, mais le upvoted commentaire ne correspond pas à votre question. Merci
OriginalL'auteur CrypticPrime | 2010-07-06
Vous devez vous connecter pour publier un commentaire.
RÉSOLU
Il s'avère que nous avons un exe qui charge une DLL.
La DLL contient la WCF client.
Lors de la compilation, MyServer.dll.la config est généré, mais depuis l'exe est natif (pas .NET) il ne lit pas dans une .fichier de configuration automatiquement. Nous avons besoin de le faire manuellement.
Ce lien m'a permis de charger la configuration manuellement et de créer un CustomChannelFactory<> pour résoudre cette question.
Pour quelqu'un d'autre avoir besoin de la même chose, voici le lien qui conduit à la solution:
http://www.paraesthesia.com/archive/2008/11/26/reading-wcf-configuration-from-a-custom-location.aspx
OriginalL'auteur
J'ai eu ce genre de situation, où j'ai eu
Maintenant le projet des Consommateurs avait toutes les paramètre de configuration dans
<system.serviceModel>
Tag de mon application.config, sa a été jette toujours le même message d'erreur comme ci-dessus.Tout ce que je fait est ajouté la même balise
<system.serviceModel>
pour mon projet principal de l'app.fichier de config, et, enfin, nous étions bons pour aller.Le Vrai problème, d'autant que dans mon cas, ce fut la lecture d'un mauvais fichier de configuration. Au lieu de consommateur de l'application.config, il faisait référence principale proj config. il m'a fallu deux heures pour comprendre cela.
OriginalL'auteur
Pourrait être juste la façon dont vous avez écrit, mais il semble que votre fichier de config n'est pas copié dans le répertoire correctement. Il doit avoir un nom correspondant à votre application pas d'application.config. Si vous essayez de changer le nom de l'application.fichier de configuration de [votre nom de fichier exe].exe.config n'est que de l'aide.
Eh bien tout simplement pour référence future application.config ne marchera jamais, car il ne sera pas ramassé. De sorte que les deux applications .fichier de config avec le nom correspondant au nom de l'exe. Avez-vous peut-être copier la config à partir de la simple application dans le complexe de l'app et d'oublier de changer le nom de la config?
Malheureusement, je souhaite que ce soit le cas. Tous les noms de fichier sont corrects.
Hrmmm...je viens de remarquer que VS est la génération de MyServer.dll.config et pas un *.exe.fichier de configuration. Est-ce un problème? Est-il de la magie j'ai besoin de le faire avec une DLL?
Oui, je vois ce n'est pas une relation directe avec le client simple qui fonctionne. Le gros de la production de l'app a un BigServer.exe application qui se charge de l'ensemble de notre code est compilé dans MyServer.dll. Peut-être cela devrait être une question distincte sur StackOverflow?
OriginalL'auteur
Quand le fichier EXE consomme de la DLL le fichier de config, il cherche n'est pas DLLName.Dll.Config son nom-exe.exe.config , changer le nom de la config du fichier et le copier dans le chemin d'exécution. Il devrait fonctionner.
Cheers!!!!!!!!!
OriginalL'auteur
Une situation similaire avec les différentes solutions qui peuvent vous être utiles dans ces circonstances particulières:
Comme la création de ces postes, j'ai un fichier EXE de l'hébergement du Client définis dans la DLL.
Différentes à la situation ci-dessus est que mon Client est UDP en utilisant la sonde de
découvrir les points de terminaison de Service (évidemment, le service a MEX activé)
La ClientProxy hérite DuplexClientBase, et surchargé d'instanciation méthode vous permet de spécifier la liaison et le point de terminaison sans besoin de fichiers de configuration.
Un exemple VB, j'ai découvert un point de terminaison (ep) et je sais que la liaison TCP avec la sécurité est désactivée, donc je peux instancier et utiliser le callback client:
OriginalL'auteur