#windows #vb.net #wcf #service
#Windows #vb.net #wcf #Обслуживание
Вопрос:
У меня есть VB.NET Служба WCF, размещенная как оконный сервис. Я смог создать установочный пакет, установить службу на свой компьютер и запустить службу вручную из служб в административных средствах.
Теперь, когда я пытаюсь ссылаться на сервис в моем тестовом консольном приложении (адрес:http://localhost:8080 /), я получаю следующую ошибку:
Произошла ошибка при загрузке ‘http://localhost:8080 ‘.`
Не удалось подключиться к удаленному серверу Не удалось установить соединение, поскольку целевая машина активно отказалась от него 127.0.0.1:8080`
Метаданные содержат ссылку, которая не может быть разрешена: ‘http://localhost:8080 /’. Не удалось подключиться к http://localhost:8080 /. Код ошибки TCP 10061: не удалось установить соединение, поскольку целевая машина активно отказалась от него 127.0.0.1:8080. Не удается подключиться к удаленному серверу, соединение не может быть установлено, поскольку целевая машина активно отказалась от него 127.0.0.1:8080 Если служба определена в текущем решении, попробуйте создать решение и снова добавить ссылку на службу.
Не уверен, что я могу с этим поделать. Есть идеи???
Спасибо, Джейсон.
Вот код из app.config внутри моего сервиса:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.diagnostics>
<sources>
<!-- This section defines the logging configuration for My.Application.Log -->
<source name="DefaultSource" switchName="DefaultSwitch">
<listeners>
<add name="FileLog"/>
<!-- Uncomment the below section to write to the Application Event Log -->
<!--<add name="EventLog"/>-->
</listeners>
</source>
</sources>
<switches>
<add name="DefaultSwitch" value="Information" />
</switches>
<sharedListeners>
<add name="FileLog"
type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
initializeData="FileLogWriter"/>
</sharedListeners>
</system.diagnostics>
<system.serviceModel>
<services>
<service name="ExStreamWCF.Service1"
behaviorConfiguration="ExStreamWCF.Service1Behavior">
<!-- Service Endpoints -->
<host>
<baseAddresses>
<add baseAddress = "http://localhost:8080/Design_Time_Addresses/JasonsService/Service/" />
</baseAddresses>
</host>
<endpoint address="" binding="wsHttpBinding" contract="ExStreamWCF.IService1">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ExStreamWCF.Service1Behavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Если кому-то от меня нужно больше, пожалуйста, дайте мне знать!
Ответ №1:
Не уверен, действительно ли это проблема, но на производственном сервере я бы никогда не использовал localhost
в качестве своего базового адреса.
Итак, можете ли вы попытаться изменить:
<service name="ExStreamWCF.Service1"
behaviorConfiguration="ExStreamWCF.Service1Behavior">
<host>
<baseAddresses>
<add baseAddress = "http://localhost:8080/Design_Time_Addresses/JasonsService/Service/" />
</baseAddresses>
</host>
Для
<service name="ExStreamWCF.Service1"
behaviorConfiguration="ExStreamWCF.Service1Behavior">
<host>
<baseAddresses>
<add baseAddress = "http://YourServerName:8080/Design_Time_Addresses/JasonsService/Service/" />
</baseAddresses>
</host>
Имеет ли это какое-либо значение при вызове службы??
Комментарии:
1. Никакой разницы вообще. Даже пробовал оба способа в адресе «Добавить ссылку на службу» клиентского приложения. Я заменил все значения ‘localhost’ в файлах конфигурации (Service amp; WCF). Но не повезло…
2. @Jason: есть какие-нибудь успехи, если вы попытаетесь подключиться к адресу MEX??
http://YourServer:8080/Design_Time_Addresses/JasonsService/Service/mex
3. @Jason: есть ли на этом сервере брандмауэр, который может отказать в подключении к порту 8080?? Если да: можете ли вы добавить правило к брандмауэру, чтобы разрешить это соединение?? Или не могли бы вы изменить URL на что-то вроде
http://YourServer:80/:......
поскольку порт 80 (HTTP) обычно открыт на большинстве брандмауэров…4. Моя ошибка… При добавлении ссылки на службу вызывался не тот каталог — но большое спасибо за вашу помощь!!!