Я разработал автономный сервис WCF с использованием basicHttpBinding, и все работает нормально, когда клиент находится на локальной машине. Но когда я пытаюсь подключиться с любого компьютера в сети, он просто отключается и выдает следующую ошибку:
There was an error downloading 'http://192.168.0.59:8888/DannyService?wsdl'.
Unable to connect to the remote server
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 192.168.0.59:8888
Metadata contains a reference that cannot be resolved: 'http://192.168.0.59:8888/DannyService?wsdl'.
Could not connect to http://192.168.0.59:8888/DannyService?wsdl. TCP error code 10060: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 192.168.0.59:8888.
Unable to connect to the remote server
A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 192.168.0.59:8888
If the service is defined in the current solution, try building the solution and adding the service reference again.
Я предполагаю, что мне не хватает какой-то фундаментальной (и, несомненно, смущающе очевидной) проблемы, и я буду очень благодарен, что мне ее указали.
Ниже приведен пример программы + app.config, который иллюстрирует то же поведение, которое я испытываю с реальной системой, то есть она работает отлично на локальном уровне, но когда я пытаюсь подключиться (к http://192.168.0.59:8888/DannyService?wsdl или к http://192.168.0.59:8888/DannyService) с любой другой машины, время ожидания истекло.
namespace DannyService
{
using System;
using System.Reflection;
using System.ServiceModel;
[ServiceContract]
interface IDannyControl
{
[OperationContract]
string SayHi();
}
class DannyControl
: IDannyControl
{
public string SayHi()
{
return "Hi!";
}
}
class Program
{
static void Main(string[] args)
{
ServiceHost host = new ServiceHost(typeof(DannyControl));
host.Open();
Console.ReadLine();
host.Close();
}
}
}
и
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="DannyServiceBehaviour">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="DannyService.DannyControl" behaviorConfiguration="DannyServiceBehaviour">
<host>
<baseAddresses>
<add baseAddress="http://192.168.0.59:8888/DannyService"/>
</baseAddresses>
</host>
<endpoint address="danny" binding="basicHttpBinding" contract="DannyService.IDannyControl" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
</configuration>
Большое спасибо заранее.