Доступ к веб-службам SharePoint через Silverlight - PullRequest
4 голосов
/ 04 февраля 2009

У меня проблема с доступом к веб-сервису SharePoint через Silverlight.

Произошла ошибка при попытке сделать запрос к URI «http://sample:8000/_vti_bin/Authentication.asmx'. Это может быть связано с попытками получить доступ к услуге в междоменном режиме без надлежащей междоменной политики на месте, или политика, которая не подходит для SOAP-сервисов. Ты можешь нужно связаться с владельцем сервис для публикации междомена файл политики и обеспечить его позволяет Связанные с SOAP HTTP-заголовки для отправки. Пожалуйста, смотрите внутреннее исключение для больше деталей.

Некоторые вопросы:

  1. Как правильно развернуть clientaccesspolicy.xml через Sharepoint Designer? Просто откройте сайт в конструкторе, добавьте файл и затем опубликуйте?
  2. Сайт, на котором должен быть развернут clientaccesspolicy.xml, использует формы проверки подлинности. Я не смог использовать Sharepoint Designer для публикации там. Из-за этого я создал новую зону для этого сайта, которая использует аутентификацию Windows, и опубликовал там файл clientaccesspolicy.xml. Оба используют одну и ту же базу данных контента, не так ли?
  3. Если файл clientaccesspolicy.xml будет опубликован, как я могу разрешить анонимный доступ к этому файлу?

С уважением Антон Калчик

Ответы [ 5 ]

1 голос
/ 21 октября 2009

В нашем проекте мы использовали это для обработки HTTP-обработчика. Мы помещаем файл clientaccesspolicy.xml в каталог _layouts (который является общим для сайтов sharepoint) с помощью функции (вы также можете просто скопировать ее туда вручную).

Затем мы добавили наш обработчик HTTP в раздел обработчиков web.config. В нашем обработчике мы проверяем, является ли запрос для /clientaccesspolicy.xml, и если это так, мы переписываем путь:

if (path.ToLowerInvariant() == "/clientaccesspolicy.xml")
{
    HttpContext.Current.RewritePath("/_layouts/clientaccesspolicy.xml");
}

Я не уверен, что это обойдёт систему безопасности, поэтому может не полностью решить вашу проблему. Но, по крайней мере, он дает вам метод доступа к этому файлу.

1 голос
/ 04 февраля 2009

Вот ответы на мои вопросы 1. и 2.:

  1. В Sharepoint Designer вы открываете сайт через: Файл -> Открыть сайт -> В текстовом поле «Имя сайта:» введите URL своего сайта. Затем перетащите файл clientaccesspolicy.xml в корневой каталог вашего сайта.
  2. Если у вас есть Аутентификация по форме, для этого шага вам не нужно создавать новую зону (но по некоторым причинам это может быть полезно). Вы просто открываете веб-браузер и вводите URL своего сайта. Затем заполните текстовые поля (всегда с пользователем, имеющим права администратора) и отметьте «Автоматически входить». После этого дизайнер Sharepoint будет использовать эти учетные данные для указанного URL.

Если вы можете помочь мне с вопросом №. 3, или у вас есть другое решение, как я могу получить доступ к clientaccesspolicy.xml из Silverlight, опубликуйте его!

0 голосов
/ 07 декабря 2010

Я нахожу более реальный способ реализовать sharepoint httpHandler: он возвращает все содержимое файла clientaccesspolicy.xml

        public void ProcessRequest(HttpContext context) {
        if (context.Request.Path.ToLowerInvariant() == "/clientaccesspolicy.xml")            {
            context.Response.Write(@"<?xml version='1.0' encoding='utf-8' ?><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> </access-policy>");
        }
    }
0 голосов
/ 24 июля 2009

Имейте в виду, что файл clientaccesspolicy.xml должен находиться в корневом каталоге домена . В вашем примере он должен быть доступен по номеру http://sample:8000/clientaccesspolicy.xml.. Если вы не можете открыть его из браузера по этому URL, ваш клиент Silverlight также не найдет его.

Самый простой способ получить файл в нужном месте - просто скопировать его туда по FTP или через проводник. Файл должен быть доступен анонимным пользователям (конечно, только для чтения).

0 голосов
/ 04 февраля 2009
  1. Это хорошо.
  2. Должно быть, если вы как-то не настроили совершенно новый сайт.
  3. Не должно быть, так как это будет угрозой безопасности. Если вам нужно пройти аутентификацию через WindowsAuth для сервисов, то и для clientaccesspolicy.xml.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...