Вопросы хостинга WCF - PullRequest
2 голосов
/ 16 марта 2012

Привет, интересно, может ли кто-нибудь мне помочь, я бьюсь головой об стену, пытаясь решить эту проблему, но пока не получилось :( У меня есть WCF, размещенный на IIS6 на удаленном сервере во внутренней сети, http://systemservices/ServiceManagerServices.svc. Я могу получить доступ к службе в своем браузере, однако при попытке отправить запрос с помощью WcfTestClient я получаю следующую ошибку:

> Error: Cannot obtain Metadata from
> http://systemservices/ServiceManagerServices.svc If this is a Windows
> (R) Communication Foundation service to which you have access, please
> check that you have enabled metadata publishing at the specified
> address.  For help enabling metadata publishing, please refer to the
> MSDN documentation at
> http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange
> Error    URI: http://systemservices/ServiceManagerServices.svc   
> Metadata contains a reference that cannot be resolved:
> 'http://systemservices/ServiceManagerServices.svc'.    There was no
> endpoint listening at http://systemservices/ServiceManagerServices.svc
> that could accept the message. This is often caused by an incorrect
> address or SOAP action. See InnerException, if present, for more
> details.    Unable to connect to the remote server    No connection
> could be made because the target machine actively refused it
> 172.16.25.221:80HTTP GET Error    URI: http://systemservices/ServiceManagerServices.svc    There was an error
> downloading 'http://systemservices/ServiceManagerServices.svc'.   
> Unable to connect to the remote server    No connection could be made
> because the target machine actively refused it 172.16.25.221:80

Я пытался изменить мой web.config на множество разных значений, это не соответствует действительности, но ничего! Любые идеи будут приветствоваться !!!

Это мой web.config

<?xml version="1.0"?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="ServiceManager.Services.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <system.web>
        <customErrors mode="Off"/>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>
    <system.serviceModel>
        <services>
            <service name="ServiceManager.Services.ServiceManagerServices" behaviorConfiguration="WCFServiceBehavior">
                <endpoint address="" binding="wsHttpBinding" contract="ServiceManager.Services.IServiceManagerServices" />
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="WCFServiceBehavior">
                    <serviceMetadata httpGetEnabled="True"/>
                    <serviceDebug includeExceptionDetailInFaults="True" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
    </system.serviceModel>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
    </system.webServer>
</configuration>

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Поскольку вы не можете подключиться, это может быть ограничение доступа, но это сообщение может отображаться, когда вас выгнали из-за других проблем, так что это может быть отсутствующий двоичный файл, на который имеется ссылка, или использование неверного DataContract или что-то подобное.

Сначала включите некоторую диагностику:

<system.diagnostics>
  <sources>
    <source name="System.ServiceModel" switchValue="Warning, ActivityTracing" propagateActivity="true">
      <listeners>
        <add type="System.Diagnostics.DefaultTraceListener" name="Default">
          <filter type="" />
        </add>
        <add name="ServiceModelTraceListener">
          <filter type="" />
        </add>
      </listeners>
    </source>
  </sources>
  <sharedListeners>
    <add initializeData="path\to\trace.svclog"
      type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
    <filter type="" />
  </add>
</sharedListeners>

Теперь запустите службу, получите сообщение об ошибке и, используя SvcTraceTool (просто перейдите к Program Files\Microsoft SDKs и выполните поиск по svc), откройте журнал вывода. Это даст вам более подробный обзор процесса, и в этот момент он пойдет не так, и укажет более подробную информацию об исключении, иногда просто попросив вас просмотреть в журнале событий конкретное исключение.

0 голосов
/ 16 марта 2012

Невозможно подключиться к удаленному серверу. Невозможно установить соединение потому что целевая машина активно отказалась 172.16.25.221:80

Я бы сказал, что это проблема брандмауэра, а не проблема web.config. Можете ли вы связаться по этому адресу через порт 80 и получить ответ?

...