Вызов веб-службы Sharepoint в службе WCF - PullRequest
1 голос
/ 20 мая 2011

Я новичок в службе WCF. Я создал простое веб-приложение asp.net и назвал веб-сервис администратора SharePoint для создания сайта. Ниже приведен код.

protected void btnSubmit_Click(object sender, EventArgs e)
    {
        CreateSiteClass objCreateSiteClass = new CreateSiteClass();
        objCreateSiteClass.CreateSite(txtSiteName.Text);
    }

[WebServiceBindingAttribute(Name = "AdminSoap", Namespace = "http://schemas.microsoft.com/sharepoint/soap/")]

public class CreateSiteClass : System.Web.Services.Protocols.SoapHttpClientProtocol
{
    public void CreateSite(string str)
    {
        try
        {
            AdminService.Admin admService = new AdminService.Admin();
            //admService.Credentials = System.Net.CredentialCache.DefaultCredentials;
            admService.Credentials = new System.Net.NetworkCredential("ashish.rautela", "badri@12345", "IRISSOFTWARE");
            admService.CreateSite(str, "Title", "Description", 1033, "STS#0", "IRISSOFTWARE\\ashish.rautela", "Ashish Rautela", "ashish.rautela@irissoftware.com", "", "");
        }
        catch (System.Web.Services.Protocols.SoapException ex)
        {
            Console.WriteLine(ex.StackTrace);
        }
    }
}

Это успешно созданный сайт (что бы вы ни передавали в параметре функции)

Но мое требование - использовать этот сервис внутри сервиса WCf. Итак, я создал приложение WCF и написал ту же функцию в своем классе Service1, который реализует интерфейс IService1.

Служба WCF была успешно построена, и когда я просмотрел ее после создания виртуального каталога, он дал мне следующий путь: -

http://vm -sp-vishal.irissoftware.com: 8888 / WCFSiteCreateor / Service1.svc * 1012 WSDL *

После этого я создал простое веб-приложение asp.net и добавил ссылку на сервис в моем проекте, щелкнув правой кнопкой мыши -> Добавить ссылку на сервис. Затем я написал следующий код в файле default.aspx.cs

protected void btnid_Click(object sender, EventArgs e)
{
    TestService(txt.Text);
}

protected void TestService(string strUrl)
{
    MyWCFAdminService.Service1Client objMyWCFAdminService = new MyWCFAdminService.Service1Client();
    objMyWCFAdminService.SiteCreatorClass(strUrl);
}

Но когда я запускаю это приложение и передаю параметр функции в текстовое поле, это дает мне ошибку отказа в доступе.

Я - администратор фермы на сервере SharePoint, на котором выполняется этот код.

Любая помощь?

1 Ответ

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

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

вам может понадобиться файл clientaccesspolicy.xmlm в корне ваших сервисов wcf (или sdharepoint)

его содержимое должно быть примерно таким

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

Очевидно, что кто-то не в безопасности;) плохо, что ты поймешь, что выбил.

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