В вашей конфигурации есть несколько проблем. Этот проект кажется проектом библиотеки классов. Пожалуйста, используйте шаблон приложения службы WCF. Тогда базовый адрес службы должен быть настроен в IIS, а не в файле конфигурации. Кроме того, ваша конфигурация привязки не вступит в силу, поскольку вы не применяете ее в конечной точке службы.
<endpoint address="" binding="netTcpBinding" bindingConfiguration=""
Пожалуйста, обратитесь к моему примеру.
Сервер (приложение службы WCF).
IService.
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(string value);
}
Service1.svc
public class Service1 : IService1
{
public string GetData(string value)
{
return DateTime.Now.ToLongTimeString();
}
}
Web.config
<system.serviceModel>
<services>
<service name="WcfService3.Service1">
<endpoint address="" binding="netTcpBinding"
contract="WcfService3.IService1">
</endpoint>
<endpoint address="mex" binding="mexTcpBinding"
contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Затем мы развертываем службу в IIS. Перед его развертыванием мы должны включить функции Windows для протокола net.tcp
.
Добавить поддержку протокола net.tcp
на веб-сайте.
Затем добавьте привязку сайта.
Еще одна вещь, на которую мы должны обратить внимание - это проверка того, что приведенная ниже служба находится в рабочем состоянии.
Клиент. (добавив ссылку на службу, клиентский прокси отправляет вызов)
static void Main(string[] args)
{
ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
//by default, the nettcpbinding uses windows credential, we should provide server windows account.
client.ClientCredentials.Windows.ClientCredential.UserName = "administrator";
client.ClientCredentials.Windows.ClientCredential.Password = "abcd1234!";
try
{
var result = client.GetData("Hello");
Console.WriteLine(result);
}
catch (Exception)
{
throw;
}
}
App.config.
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="NetTcpBinding_IService1">
<security>
<transport sslProtocols="None" />
</security>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://vabqia969vm/Service1.svc" binding="netTcpBinding"
bindingConfiguration="NetTcpBinding_IService1" contract="ServiceReference1.IService1"
name="NetTcpBinding_IService1">
<identity>
<servicePrincipalName value="host/vabqia969VM" />
</identity>
</endpoint>
</client>
</system.serviceModel>
Результат.
Не стесняйтесь, дайте мне знать, если я могу чем-то помочь.