My service has no svc file. See the config entry and definitely notice one thing that one mex endpoint has been declared for one tcp endpoint.
So my question is when my service will have many endpoint like wshttp, wsDualhttp, tcp,m smq etc then do i need to declare mex endpoint for each type of different endpoint?
Here is my service config detail where service is hosted.
<services>
<service name="ChatService.ChatHandler" behaviorConfiguration="behaviorConfig">
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:1648/ChatService/" />
<add baseAddress="http://localhost:1647/ChatService/" />
</baseAddresses>
</host>
<endpoint address="tcp"
binding="netTcpBinding"
bindingConfiguration="tcpBinding"
contract="ChatService.IChat"/>
<endpoint address="net.tcp://localhost:1645/ChatService/mex"
binding="mexTcpBinding"
contract="IMetadataExchange"/>
</service>
</services>
Edited Part
So from what I can understand about Marc_S's answer: Even without any MEX endpoints, my service will be fully operational.
If someone wants to interface with your service, you'll need to provide the relevant information in some other way, though, since those clients cannot "auto-discover" and inspect the service via MEX - you'll have to e.g. provide a download of your WSDL and accompanying XSD files so someone can build a client without interactively querying your service's MEX endpoints.... so if i do not expose mex then i have to create wsdl file and i have to pass that wsdl to client manually....am i right?
Is there any other way for client to create proxy of my service when mex will be disable?
Then is there any way to determine from service end which protocol client use to invoke my service....suppose i have multiple endpoint like wshttp, wsdualhttp, tcp, msmq etc?