2013-02-17 2 views
0

Итак, я недавно разместил веб-сайт Silverlight, и я только что заметил довольно ужасную ошибку.Что делает «www» для моих привязок к конечным точкам?

Мое приложение Silverlight имеет 5 привязок к службам wcf, размещенным в веб-приложении на одном веб-сайте, только одна папка впереди. Скажем, мой сайт www.test.com. Вот переплеты из ServiceReferences.ClientConfig в SilverLight приложения:

<client> 
    <endpoint address="http://www.test.com/MyWebService/Service1.svc" 
     binding="customBinding" bindingConfiguration="CustomBinding_IService1" 
     contract="Service1.IService1" name="CustomBinding_IService1" /> 
    <endpoint address="http://www.test.com/MyWebService/Service2.svc" 
     binding="customBinding" bindingConfiguration="CustomBinding_IService2" 
     contract="Service2.IService2" name="CustomBinding_IService2" /> 
    <endpoint address="http://www.test.com/MyWebService/Service3.svc" 
     binding="customBinding" bindingConfiguration="CustomBinding_IService3" 
     contract="Service3.IService3" name="CustomBinding_IService3" /> 
    <endpoint address="http://www.test.com/MyWebService/Service4.svc" 
     binding="customBinding" bindingConfiguration="CustomBinding_IService4" 
     contract="Service4.IService4" name="CustomBinding_IService4" /> 
    <endpoint address="http://www.test.com/MyWebService/Service5.svc" 
     binding="customBinding" bindingConfiguration="CustomBinding_IService5" 
     contract="Service5.IService5" name="CustomBinding_IService5" /> 
</client> 

Так что моя проблема в том, что, когда я загрузить Silverlight приложения, на странице в ASPX по умолчанию размещенной в корневом каталоге моего сайта IIS, то наставничества только работа когда я набираю test.com в URL-адресе, а не когда я печатаю www.test.com. Это не подводит, но данные, которые должны быть извлечены через службы, просто не отображаются, и я не могу подключиться к своим учетным данным. (так как одна из моих служб используется для аутентификации)

Я попытался изменить значения iRementsServices.ClientConfig, удалив www, но ситуация не изменилась ни на один бит. Он все еще хорошо соединяется без www в URL-адресе, а не когда WWW включен.

ответ

0

Ну, спасибо this lovely post, я должен превзойти эту проблему. Я объясню, что я должен был сделать здесь, на всякий случай, когда связь сходит.

Все, что я должен был сделать, чтобы изменить каждый экземпляра каждого клиентского сервиса в моем Silverlight код:

Service.IService proxy = new Service.ServiceClient(); 

к этому:

Uri servUri = new Uri("../MyWebService/Service.svc", UriKind.Relative); 
EndpointAddress servAddr = new EndpointAddress(servUri); 
Service.IService proxy = new Service.ServiceClient("CustomBinding_IService", servAddr); 

Как объяснено в блоге, то». . "необходимо, так как приложение Silverlight (обычно) находится в папке ClientBin.

И это сделало трюк для меня!

Смежные вопросы