скопируйте файл (ы) wsdl и xsd в виртуальный каталог и добавьте в ваш web.config следующие строки:

лужба WCF, похоже, использует имя компьютера вместо имени домена. Когда я смотрюMyService.svc?wsdl ссылка показывает имя моего компьютера.

Где я могу добавить свое доменное имя в web.config? Адрес конечной точки, базовый адрес или личность?

Примечание: я использую SSL, поэтому он должен бытьhttps://www.example.com/myservice.svc

 Blankman23 янв. 2009 г., 15:43
что за хак Это известная ошибка, потому что я не вижу, как хостеры с общим доступом справляются с этим!
 Darin Dimitrov22 янв. 2009 г., 18:42
Смотрите, если этоПочта может помочь.

Ответы на вопрос(13)

настройте атрибут httpGetEnabled и атрибут httpsGetEnabled в файле web.config.

<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
 Rob Koch10 янв. 2014 г., 15:55
Это была победа для меня! Спасибо @Haridharan
 Steve28 мая 2013 г., 18:48
Просто, легко, именно то, что нужно. Не знаю, почему все остальные предлагают все эти сложные решения. Это делает именно то, что хочет ОП.

WCF использует имя компьютера вместо IP-адреса и не может быть разрешено

Это решило мою проблему, возможно, потому что у меня есть несколько веб-сайтов на одном хосте, и это очень просто.

< serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

</ system.serviceModel>

 Learner14 февр. 2019 г., 23:00
Спасибо, это сработало и для меня
 Flo27 мая 2013 г., 15:56
Этот работал и для меня.

http://knowledgebaseworld.blogspot.com/2010/06/domain-name-replaced-with-machine-name.html, он должен работать для всех вас, так как он отлично работает со мной на локальном уровне, постановке и производстве без привязки к iis

а в файл конфигурации IIS.

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

Перейдите в C: \ Windows \ System32 \ inetsrv \ config и откройте applicationHost.config

Ищите раздел сайтов. Вы увидите что-то вроде следующего

<sites>
  <site name="Default Web Site" id="1">
    <application path="/">
        <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
    </application>
    <bindings>
      <binding protocol="http" bindingInformation="*:80:puck" />
      <binding protocol="net.tcp" bindingInformation="808:*" />
      <binding protocol="net.pipe" bindingInformation="*" />
      <binding protocol="net.msmq" bindingInformation="localhost" />
      <binding protocol="msmq.formatname" bindingInformation="localhost" />
      <binding protocol="http" bindingInformation="*:80:puck.idunno.org" />
      <binding protocol="http" bindingInformation="*:80:localhost" />
      <binding protocol="https" bindingInformation="*:443:" />
    </bindings>
  </site>
  ....
</sites>

Вы можете видеть, что привязки для протокола http указывают заголовок узла, а https - нет. Когда вы просматриваете веб-страницы, вы не можете использовать заголовки хоста через HTTPS, но WCF по-прежнему использует его при генерации WSDL - если он не может его найти, он возвращается к имени машины.

Так что все, что вам нужно сделать, это отредактировать привязку HTTPS следующим образом

      <binding protocol="https" bindingInformation="*:443:puck" />

добавление правильного полного доменного имени в конец информации о привязке. Сброс IIS и WCF должны получить это прямо сейчас.

Решение IIS6 уже опубликовано Дэрином

 test30 июн. 2012 г., 22:28
Это работает, но я сталкиваюсь с проблемой, будет работать только точное доменное имя, которое я укажу. Например, если я сделаю: *: 443: domain.com Тогда будет работать только domain.com/Service.svc, если я сделаю: *: 443: www.domain.com Тогда будет только www.domain.com/Service.svc работать, но не оба. Как я могу получить оба? (С префиксом https)
 Adam Berent23 мар. 2011 г., 21:18
О боже, если бы я только нашел это 2 часа назад

которые решили мою проблему - 1.Произведите wsdl в браузере и сохраните в файл (нажав .svc? Wsdl из браузера) сохраните как .wsdl

Создайте файлы xsd, нажав URL-адрес из wsdl (xsd = xsd0 и т. Д.), И сохраните в файл из браузера, сохраните как .wsdl

замените все ссылки на имена машин из wsdl на доменное имя (или IP-адрес), измените ссылки на xsd и сохраните И замените все ссылки на машинные имена из файлов xsd с именем домена (или ip-адресом), убедитесь, что имя файла xsd имеет расширение .xsd (т.е. , name0.xsd, name1.xsd, name2.xsd)

скопируйте файл (ы) wsdl и xsd в виртуальный каталог и добавьте в ваш web.config следующие строки:

<behaviors>
      <serviceBehaviors>
        <behavior name="MyServiceBehavior">
          <serviceMetadata httpGetEnabled="true" externalMetadataLocation="http://IPorDomainName/MyServices/FileTransferService.wsdl"  />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

вот ответ. В разделе Поведение службы -> ServiceMetaData добавьте URL службы.

Обратите внимание, что если вы не добавите myService, он выдаст еще одну ошибку.

WCFExtras изменить имя хоста.

WCFExtras - это небольшая библиотека с открытым исходным кодом, которая позволит вам написать следующее для изменения имени хоста:

<behaviors>
  <endpointBehaviors>
    <behavior name="xxx">
      <wsdlExtensions location="http://some-hostname-visible-from-outside/path-to-a-service/service.svc" singleFile="True" />
    </behavior>
  ...

е статьи о заголовках нескольких узлов с IIS и WCF, но если вы используете SSL, вы не можете добавить заголовок узла к идентификаторам веб-сайтов в интерфейсе IIS, вы можете добавить их только к обычным идентификаторам HTTP:

Однако вы можете добавить заголовки хоста SSL через скрипт командной строки, и это решило проблему для меня:

cscript.exe adsutil.vbs set /w3svc/<site identifier>/SecureBindings ":443:<host header>"

Для получения дополнительной информации об этом смотрите эту ссылку:http://blumenthalit.net/blog/Lists/Posts/Post.aspx?ID=14

<useRequestHeadersForMetadataAddress></useRequestHeadersForMetadataAddress> чтобы решить мою проблему. Кажется, что WCF 4.0 заботится о заголовках, добавив, что я использовал SSL для доступа к службе WCF.

онфигурации, в которой используются заголовки запросов:

    <behaviors>
        <serviceBehaviors>
            <behavior name="AutoVaultUploadBehavior">
                <useRequestHeadersForMetadataAddress>
                    <defaultPorts>
                        <add scheme="https" port="443" />
                    </defaultPorts>
                </useRequestHeadersForMetadataAddress>
 Piero Alberto05 мая 2015 г., 16:45
а для полнолуние? как это сделать?
 a43251118 апр. 2013 г., 15:38
Та же проблема, и это решение отлично сработало для меня. Спасибо!
 Andy McCluggage29 июн. 2011 г., 17:43
Ссылка не работает

омощью очень простой пользовательской фабрики услуг.

Установка службы WCF на сайте общего хостинга, снова

 Martin Konecny07 февр. 2015 г., 19:13
К вашему сведению, неработающая ссылка

Ваш ответ на вопрос