Scusate per la dichiarazione del problema lungo ... Ho passato due giorni di debug e hanno un sacco di note ..."Impossibile trovare elemento endpoint con nome ..."
Ho un servizio dati WCF e un altro processo che tenta di connettersi ad esso come client tramite TCP e/o HTTP.
Ho un'app client di test MOLTO semplice che sembra connettersi bene, ma l'app di produzione più complicata non può connettersi (né TCP né HTTP). In entrambi i progetti client, ho permesso a Visual Studio 2008 di generare app.config utilizzando "Aggiungi riferimento servizio" e consentendogli di estrarre i metadati dal servizio dati.
ecco il codice per il semplice client di prova che funziona:
using Client.MyDataService;
namespace Client
{
class Program
{
static void Main(string[] args)
{
MyDataServiceClient client = new MyDataServiceClient("net.tcp");
client.GetRecords();
}
}
}
Ecco il codice per il più complicato, client di produzione:
DataServiceManager.cs:
using MyServer.MyDataService;
namespace MyServer.DataServiceBridge
{
class DataServiceManager
{
MyDataServiceClient dataServiceClient = new MyDataServiceClient("net.tcp");
}
}
Nel processo principale:
DataServiceManager d = new DataServiceManager();
Ecco il file app.config sia per il semplice client cliente e la produzione:
<?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>
In Debug \ bin \ di MyServer è MyServer.exe, app.config.
In bin \ Debug del MyDataSeriviceHost \ cartella è MyDataService.exe, app.config e MyDataSeriviceHost.exe.config. app.config e MyDataSeriviceHost.exe.config sono identici.
Ecco il messaggio di errore:
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.
Tutte le idee che cosa sta succedendo? Ho praticamente esaurito Google. :-(
Probabilmente un errore di battitura, ma il vostro errore messaggio legge: IyDataService. Probabilmente dovrebbe essere IMyDataService. –
Sì, quello era un refuso nella redazione per postare qui. Risolto, grazie! – CrypticPrime
per favore non duplicare tag come "WCF" nel titolo. Ecco a cosa servono i tag. –