2009-06-14 13 views
1

Il ya tellement de choses sur ce site en ligne, mais personne ne semble être en mesure de répondre à cette question ... J'espère que quelqu'un sera ici! J'ai donc un service Web WCF hébergé sur godaddy.com. Tout fonctionne très bien quand j'essayez d'accéder à l'aide:Silverlight WCF web service d'hébergement sur domain.com et www.domain.com

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

problème

est quand je supprimer le www-à-dire

http://domain.com/DataService.svc

Voilà ma section web.config ServiceModel:

<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> 

Voici mon 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> 

Mon service utilise un 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]); 
    } 
} 

Fondamentalement, ce que je voudrais est mon WCF webservice pour être accessible si l'utilisateur entre domain.com ou www.domain .com dans son navigateur.

Toute aide sera grandement appréciée!

ps. Exécution d'IIS 7 avec ASP 3.5

Thnaks! Simon

Répondre

1

Vous rencontrez un problème de domaine croisé. Voir here pour une liste des raisons pour lesquelles cela arrive. Comme il se trouve "www" et non-www sont des domaines différents, même si elles ne semblent pas comme ça. Vous devrez ajouter un fichier de domaine croisé. Voir Tim's blog pour une bonne info

+0

C'est bizarre bc j'avais une clientaccesspolicy.xml mais c'est seulement quand j'ai ajouté le crossdomain.xml c'est finalement travaillé. Cela pourrait-il être dû à Godaddy? Au moins, ça marche maintenant. Merci! –

+0

Intéressant. Il est en fait facile de balayer les fichiers interdomaines. Peut-être que cet outil vous aidera: http://www.franksworld.com/Utilities/CrossDomainPolicyChecker/Default.aspx gl! –