Службы WCF не работают из приложения Silverlight после развертывания - PullRequest
0 голосов
/ 09 мая 2011

Хорошо, я видел несколько очень похожих вопросов, но ни на один из них мне, похоже, не ответили. Я создал приложение Silverlight, которое вызывает несколько сервисов для заполнения различных списков со списком из базы данных. Я получил эту работу без особых проблем на моей локальной машине.

Итак, теперь я хочу развернуть его на нашем веб-сервере. Было довольно просто получить ISS7 для загрузки приложения Silverlight. Тем не менее, ни один из моих сервисов, похоже, не работает должным образом, потому что поля со списком пусты В IE я получаю следующую ошибку:

Сообщение: необработанная ошибка в приложении Silverlight. Во время операции возникла исключительная ситуация, делающая результат недействительным. Проверьте InnerException для подробностей исключения. в System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNeeded () в MyTestPage.ViewModel.MyService.GetInfoCompletedEventArgs.get_Result () в MyTestPage.ViewModel.MainPageViewModel.b__2 (Objects, GetInfoCompletedEventArgs ea) в MyTestPage.ViewModel.MyService.MyServiceClient.OnGetInfoCompleted (состояние объекта) Строка 1 Чар: 1 Код: 0 URI: http://www.mywebsite.com/MyTestPage.aspx

Моя проблема в том, что эта ошибка возникает только при развертывании на веб-сервере, и я понятия не имею, как отладить эту проблему. Ошибка говорит о проверке InnerException, но я еще не нашел ответ (после нескольких часов поиска), который говорит мне, как я должен это сделать.

Я попытался перейти к службам, и я могу сделать это, используя доменное имя, например http://test.myserver.com/Services/MyService.svc. Однако при входе на сервер и использовании http://localhost:3456/Services/MyService.svc - это путь в ServicesReferences Файл .ClientConfig - не найден.

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

Итак, у меня есть пара вопросов:

1) Как получить доступ к InnerException, когда я запускаю приложение на веб-сервере? Есть ли определенный файл журнала, который я могу просмотреть или включить?

2) Если по какой-то причине я пытаюсь получить доступ к службе в междоменном режиме (даже если они расположены на одном сервере), как настроить приложение так, чтобы это не требовалось?

UPDATE:

Хорошо, я смог запустить трассировку. Теперь я могу видеть детали трассировки на странице, когда она загружается, но она не говорит мне ничего полезного. Я также добавил возможность записи деталей на диск. Первоначально этот файл не был написан, и я не мог понять, почему. Затем я заметил, что обновление моего приложения Silverlight не вызывает запись в журнал. Только когда я вручную просмотрел сервисы, файл журнала был обновлен. Мне кажется, это указывает на то, что мое приложение silverlight вообще не работает с сервисами (по какой-то причине). Я попытался вырезать объект View Model и запустить сервис непосредственно из кода xaml, стоящего за файлом, но это тоже не имело никакого значения.

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

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

1 Ответ

1 голос
/ 10 мая 2011

Я почти отказался от своего первоначального подхода.У меня было еще одно продолжение этого видео http://www.silverlight.net/learn/videos/all/net-ria-services-intro/. Он использует доменные службы вместо служб WCF, и было довольно просто запустить его на веб-сервере.Примеру уже два года, так что, может быть, есть лучшие способы сделать это сейчас (я открыт для предложений), но, по крайней мере, это сработало в течение часа после попытки (по сравнению с 2,5 днями и ни к чему).

...