#c# #web-services #wcf #port-number
#c# #веб-сервисы #wcf #номер порта
Вопрос:
У меня есть служба wcf, и я использовал консольное приложение в качестве хоста для своей службы. когда я использую базовый адрес следующим образом: <baseaddres ="http://ipaddress:8080/" />
. Когда я проверяю работу своей службы через веб-браузер, я могу открыть службу WSDL, и она работает нормально.
Но, поскольку я меняю номер порта на что-то другое. Узел службы запускается нормально (без исключения используемого номера порта или чего-либо еще). Когда я иду проверить, работает ли служба через веб-браузер, служба не отображается. в конце концов, мой клиент также не смог найти сервис.
конфигурация app.config
<services>
<service name="Natatorium_WCF.NatatoriumService"
behaviorConfiguration="ServiceBehavior">
<endpoint address="NatatoriumService"
binding="wsHttpBinding"
contract="Natatorium_WCF.INatatoriumService"
bindingConfiguration="wsHttpBindingConfig">
</endpoint>
<endpoint address="NatatoriumService"
binding="netTcpBinding"
contract="Natatorium_WCF.INatatoriumService"
bindingConfiguration="netTcpBindingConfig" >
</endpoint>
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="http://[ServerName]:[PortNO.1]"/>
<add baseAddress="net.tcp://[ServerName]:[PortNO.2]"/>
</baseAddresses>
</host>
</service>
</services>
это код хоста для запуска службы (консольного приложения).
static void Main(string[] args)
{
ChangeServerConfigFileAttributeValue("8080", "8090");
using (ServiceHost host = new ServiceHost(typeof(Natatorium_WCF.NatatoriumService)))
{
host.Open();
Console.WriteLine("Listening...");
Console.ReadLine();
}
}
Комментарии:
1. у вас есть какие-либо ограничения на брандмауэр или порты?
2. Я не знаю, как проверить брандмауэр, и, кстати, мой брандмауэр отключен @TMcKeown
3. Как, по вашему мнению, на это должна влиять конфигурация, поскольку она работает только с номером порта / 8080 @paramosh
4. Я добавляю свои настройки конфигурации в приведенном выше сообщении. Я использовал токены и автоматически устанавливал ip-адрес и номер порта во время выполнения. @paramosh
5. сама конфигурация выглядит хорошо. может быть что-то с кодом, запускающим хост.
Ответ №1:
<configuration>
<system.serviceModel>
<services>
<service name="HelloService.HelloService" behaviorConfiguration="mexBehaviour">
<endpoint address="HelloService" binding="basicHttpBinding" contract="HelloService.IHelloService" ></endpoint>
<endpoint address="HelloService" binding="netTcpBinding" contract="HelloService.IHelloService" ></endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" ></endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/"/>
<add baseAddress="net.tcp://localhost:8090/"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="mexBehaviour">
<remove name="serviceDebug"/>
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
Комментарии:
1. у меня та же ошибка, что и в коде, который я пишу в appconfig