Silverlight 4 Сервисы - PullRequest
       31

Silverlight 4 Сервисы

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

Я работаю под управлением Windows Server 2008 в виртуальной коробке с веб-сервером IIS, на котором размещено мое приложение silverlight.Когда я пытаюсь просмотреть приложение с сервера (ВМ) на localhost: 80, все работает нормально, и службы найдены.Но когда я пытаюсь просмотреть приложение с другого компьютера в сети, я вижу главный экран и Silverlight загружает все, но когда он обращается к службе, я получаю исключение:

SCRIPT5022: необработанная ошибка вПриложение Silverlight Во время операции возникла исключительная ситуация, делающая результат недействительным.Проверьте InnerException для подробностей исключения.на System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary () в alisaWebApp.SecurityService.EncryptCompletedEventArgs.get_Result () в alisaWebApp.LoginPage.securityClient_EncryptCompleted (Object отправителя, EncryptCompletedEventArgs е) при alisaWebApp.SecurityService.SecurityServiceClient.OnEncryptCompleted (состояние объекта)

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

Ответы [ 2 ]

2 голосов
/ 21 мая 2011

Служба будет вызываться из приложения Silverlight, запущенного в браузере пользователя, если вы вызываете службу в своем коде Silverlight.Вам нужно разрешить определенным ip или всем ip доступ к службе через http или https с помощью clientaccesspolicy.xml.

<?xml version="1.0" encoding="utf-8"?>
    <access-policy>
        <cross-domain-access>
            <policy>
                <allow-from http-request-headers= "SOAPAction">
                    <domain uri="http://*"/>
                </allow-from>
                <grant-to>
                    <resource path="/" include-subpaths="true"/>
               </grant-to>
           </policy>
        </cross-domain-access>
    </access-policy>

Этот файл должен находиться в корневом каталоге веб-приложения.

Возможно, вы захотите также настроить некоторую безопасность, если только вы не хотите, чтобы весь мир мог использовать вашу службу.

Другой проблемой может быть файл ClientConfig.Вам нужно будет изменить адрес конечной точки службы там, если он в настоящее время установлен на localhost (на ваш ip сервера).

0 голосов
/ 21 мая 2011

Возможно, вы получаете междоменное исключение. Безопасность, связанная с доступом к сервису, не обеспечивается, если приложение SilverLight размещено на локальном хосте.

Если это так, ознакомьтесь с этой статьей о междоменном доступе .

...