Для IIS7 вы добавляете его не в файл web.config, а в файл конфигурации 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 должны получить это прямо сейчас.
darin уже опубликовал решение IIS6