Служба Silverlight WCF ведет себя странно - PullRequest
0 голосов
/ 14 апреля 2009

У меня есть проект silverlight, который вызывает службу wcf. Все отлично работает на моей локальной машине.

Однако при развертывании на виртуальной машине с точно таким же запросом возвращается служба wcf, но результат остается пустым.

Я пробовал отладку, но не смог ее сломать в сервисе wcf.

Есть идеи, в чем может быть проблема, или как я мог бы отладить ее?

Спасибо


Я выяснил, в чем проблема, но не уверен, что это за решение.

В моем проекте silverlight сервис wcf, на который я ссылаюсь, http://localhost/.../SilverlightApiService.svc

Я использовал fiddler на своей виртуальной машине, чтобы увидеть сделанный запрос, и вместо попытки связаться с вышеуказанным сервисом он пытался связаться:

Http: ///.../SilverlightApiService.svc

Итак, по какой-то причине мое имя машины вставляется туда вместо localhost. Любые мысли по этому поводу будут оценены.

Ответы [ 5 ]

1 голос
/ 16 апреля 2009

У меня была именно эта проблема при развертывании на amazon ec2 - имя машины для сервиса возвращалось в wsdl, а не в dns.

Было несколько решений (одно из них заключалось в создании статического wsdl - чёрт!)

Но другой создавал своего рода фабричный шаблон для сервиса

Эта тема (вы можете прочитать все, но ответы внизу.) http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/c7fd51a2-773e-41d4-95a0-244e925597fe/

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

0 голосов
/ 16 апреля 2009

Я понял это.

Обычно имя моего компьютера было жестко запрограммировано в моем файле ServiceReferences.ClientConfig в моем проекте silverlight.

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

System.ServiceModel.EndpointAddress address = new System.ServiceModel.EndpointAddress(new Uri
        (Application.Current.Host.Source, "../WebServices/SilverlightService.svc"));

        ServiceClient serviceClient = new ServiceClient("BasicHttpBinding_IService", address);
0 голосов
/ 14 апреля 2009

У меня было такое раньше. Я бы попробовал это. Установите стартовую страницу в качестве файла веб-службы и запустите приложение. Затем верните начальную страницу на страницу по умолчанию. Затем обновите все ссылки на серверы в вашем проекте SL. Перекомпилируй все и переиздай. Это помогло мне много раз в прошлом.

0 голосов
/ 16 апреля 2009

Я понял, в чем проблема, но не уверен, что решение.

В моем проекте silverlight wcf-сервис, на который я ссылаюсь, http://localhost/.../SilverlightService.svc

Я использовал fiddler на своей виртуальной машине, чтобы увидеть сделанный запрос, и вместо попытки связаться с вышеуказанным сервисом, он пытался связаться:

Http: ///.../SilverlightService.svc

Итак, по какой-то причине мое имя машины вставляется туда вместо localhost. Любые мысли по этому поводу будут оценены.

0 голосов
/ 14 апреля 2009

Можете ли вы дать нам немного больше информации? Какую привязку вы используете? Как выглядит конфигурация службы и конфигурация клиента? Откуда вы берете свои данные, которые возвращаются? Может быть, служба на ВМ просто не получает никаких данных? (например, запрашивает базу данных, которая просто не имеет запрошенных данных?)

Марк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...