Хостинг веб-сервисов Silverlight WCF на доменах domain.com и www.domain.com - PullRequest
1 голос
/ 14 июня 2009

В Интернете так много всего, но никто не может ответить на этот вопрос ... Надеюсь, кто-то здесь будет!

Итак, у меня есть веб-сервис WCF, размещенный на godaddy.com. Все отлично работает, когда я пытаюсь получить к нему доступ, используя:

http://**www.**domain.com/DataService.svc

проблема в том, когда я удаляю www, т.е. 1007 *

http://domain.com/DataService.svc

Вот мой раздел модели web.config service:

<system.serviceModel>
<behaviors>
  <serviceBehaviors>
    <behavior name="DataServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<services>
  <service behaviorConfiguration="DataServiceBehavior"
      name="DataService">

    <endpoint address="" binding="basicHttpBinding" contract="IDataService"/>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>

Вот мой ServiceReferences.ClientConfig

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_IDataService" maxBufferSize="2147483647"
                maxReceivedMessageSize="2147483647">
                <security mode="None" />
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://www.domain.ca/DataService.svc" binding="basicHttpBinding"
            bindingConfiguration="BasicHttpBinding_IDataService" contract="Web.IDataService"
            name="BasicHttpBinding_IDataService" />
    </client>
</system.serviceModel>

Мой сервис использует CustomServiceFactory

public class CustomServiceHostFactory : ServiceHostFactory
{
    /// <summary>
    /// A custom method to eliminate multiple base addresses from the IIS host creation process
    /// </summary>
    /// <param name="serviceType">The service type to be created</param>
    /// <param name="baseAddresses">A list of the base addresses</param>
    /// <returns>A service host</returns>
    protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
    {
        if (baseAddresses.Length > 1)
        {
            ServiceHost customServiceHost =
                new ServiceHost(serviceType, baseAddresses[1]);
            return customServiceHost;
        }

        return new ServiceHost(serviceType, baseAddresses[0]);
    }
}

По сути, мне бы хотелось, чтобы мой веб-сервис WCF был доступен независимо от того, вводит ли пользователь domain.com или www.domain.com в свой браузер.

Любая помощь будет принята с благодарностью!

пс. Запуск IIS 7 с ASP 3.5

Thnaks! Simon

1 Ответ

1 голос
/ 15 июня 2009

Вы столкнулись с проблемой междоменных доменов. См. здесь для списка причин, почему это происходит. Оказывается, «www» и «no-www» - это разные домены, даже если они не похожи на это. Вам нужно будет добавить файл кросс-домена. См. блог Тима для хорошей информации

...