Доступ к веб-сервису SOAP из клиента Silverlight 4 - PullRequest
1 голос
/ 21 марта 2011

Я делаю проверку концепции, когда я получаю доступ к общедоступной веб-службе из моего клиентского приложения Silverlight 4. Когда я пытаюсь сделать вызов t его примерной общедоступной веб-службы , я получаю следующую ошибку:

An error occurred while trying to make a request to URI 'http://www.w3schools.com/webservices/tempconvert.asmx'. 
This could be due to attempting to access a service in a cross-domain way without a proper cross-domain policy in place, 
or a policy that is unsuitable for SOAP services. 
You may need to contact the owner of the service to publish a cross-domain policy file and to ensure it allows SOAP-related HTTP headers to be sent. 
This error may also be caused by using internal types in the web service proxy without using the InternalsVisibleToAttribute attribute. Please see the inner exception for more details.

Могу ли я получить доступ только к веб-службам, на которых установлены эти политики, или я просто неправильно настраиваю свою службу ASMX в своем проекте? Код для вызова службы выглядит следующим образом:

   // Create
    var webServiceProxy = new TempConvert.TempConvertSoapClient();

    // Delegate
    webServiceProxy.FahrenheitToCelsiusCompleted += (s, args) =>
    {
        // Fail?
        if (args.Error != null)
        {
            // Message
            MessageBox.Show(string.Format("Something went wrong!\n\n{0}", args.Error.Message));
        }
        else
        {
            // Message
            MessageBox.Show(string.Format("50 f to c is {0}.", args.Result));
        }
    };

    // Call
    webServiceProxy.FahrenheitToCelsiusAsync("50");

Ответы [ 2 ]

2 голосов
/ 21 марта 2011

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

У Microsoft есть много информации об этом , также ищите «перекрестный домен silverlight» для получения дополнительной информации.

1 голос
/ 05 июля 2012

когда сервер получил GET с url = /clientaccesspolicy.xml убедитесь, что он отвечает:

<access-policy>
            <cross-domain-access>
                <policy>
                    <allow-from http-request-headers="*">
                        <domain uri="*"/>
                    </allow-from>
                    <grant-to>
                        <resource path="/" include-subpaths="true"/>
                    </grant-to>
                </policy>
            </cross-domain-access>

...