Простой вызов веб-сервиса WCF от Silverlight (нужна помощь, пожалуйста!) - PullRequest
0 голосов
/ 17 мая 2010

Я новичок в программировании и сетевом взаимодействии Silverlight в целом, и я пытался найти ответ на этот вопрос весь день.Я пытаюсь создать очень простое веб-приложение Silverlight4 в VS2010, которое вызывает веб-сервис на веб-сайте ASP.NET (то же самое решение, что и в клиентском приложении Silverlight, поэтому не должно возникать междоменных проблем ???).Я написал Web-сервис, используя VS «Службу WCF с поддержкой Silverlight», которая просто возвращает строку.

Затем я написал код для использования сервиса в Silverlight:

public MainPage () {InitializeComponent();

        TestServiceClient proxy = new TestServiceClient();
        EndpointAddress address = new EndpointAddress("http://localhost:" + HtmlPage.Document.DocumentUri.Port +
            "/SilverlightApplication1.web/TestService.svc");

        proxy.Endpoint.Address = address;
        proxy.GetStringCompleted += new EventHandler<GetStringCompletedEventArgs>(proxy_GetStringCompleted);
        proxy.GetStringAsync();

    }

    void proxy_GetStringCompleted(object sender, GetStringCompletedEventArgs e)
    {
        MessageBox.Show(e.Result.ToString());
    }

Это прекрасно работает, когда я запускаю его с VS2010.Однако, когда я публикую его на своем персональном веб-сервере (IIS7) на том же компьютере, я получаю сообщение об ошибке:

Сведения об ошибке веб-страницы

Пользовательский агент: Mozilla / 4.0 (совместимо; MSIE 8.0;Windows NT 6.1; Trident / 4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Медиа-центр ПК 6.0; OfficeLiveConnector.1.4; OfficeLivePatch.1.3; .NET4.0C;.NET4.0E) Метка времени: понедельник, 17 мая 2010 г. 08:29:51 UTC

Сообщение: необработанная ошибка в приложении Silverlight Во время операции возникла исключительная ситуация, в результате которой результат стал недействительным.Проверьте InnerException для подробностей исключения.на System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary () в SilverlightApplication1.TestServiceReference1.GetStringCompletedEventArgs.get_Result () в SilverlightApplication1.MainPage.proxy_GetStringCompleted (Object отправителя, GetStringCompletedEventArgs е) при SilverlightApplication1.TestServiceReference1.TestServiceClient.OnGetStringCompleted (состояние объекта) Линия: 1 Char:1 Код: 0 URI: http://thunder.webhop.org:8001/home.html

Когда я улавливаю исключение в App.xaml.cs, я получаю следующее сообщение:

System.InvalidOperationException: Ошибка Eval.в System.Windows.Browser.HtmlWindow.Eval (String code) в SilverlightApplication1.App.ReportErrorToDOM (ApplicationUnhandledExceptionEventArgs e)

Следует отметить, что в противном случае веб-сервер работает нормально.Я могу без проблем размещать на нем приложения Silverlight через порт 8001. Я просто не могу понять, как сделать успешный вызов веб-службы!Любая помощь с этим будет С благодарностью.Я потратил весь день и вечер на это.Мой разум крутится кругами прямо сейчас ...: - (

Большое, большое спасибо заранее! Удачи

PS Извиняюсь за перекрестную публикацию на форумах Silverlight, но у нее были некоторые проблемы при публикации.

1 Ответ

0 голосов
/ 17 мая 2010

Я полагаю, что это на самом деле не имеет отношения к вызову веб-службы, поскольку исключение, обнаруженное в App.cs, что-то говорит о "Eval fail". Я думаю, что это может быть код в вашем обработчике proxy_GetStringCompleted. MessageBox.Show - это не что иное, как предупреждение JavaScript за кулисами. Может быть, вы используете браузер с активированным блокировщиком JavaScript или что-то подобное? Тем не мение; то, что вы можете попробовать, это просто использовать что-то другое, чем MessageBox.Show (), например

(new ChildWindow { Content = new TextBlock { Text = e.Result.ToString() } }).Show();

.

Ура, Алекс

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