【问题标题】:Calling Sharepoint Web Service in WCF service在 WCF 服务中调用 Sharepoint Web 服务
【发布时间】:2011-05-20 09:57:40
【问题描述】:

我是 WCF 服务的新手。我创建了一个简单的 asp.net Web 应用程序并调用了 SharePoint Admin Web 服务来创建一个站点。以下是代码。

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 应用程序,并在实现 IService1 接口的 Service1 类中编写了相同的函数。

WCF 服务已成功构建,当我在创建虚拟目录后浏览它时,它给了我以下路径:-

http://vm-sp-vishal.irissoftware.com:8888/WCFSiteCreateor/Service1.svc?wsdl

在此之后,我创建了一个简单的 asp.net Web 应用程序,并通过右键单击在我的项目中添加了一个服务引用-->添加服务引用。然后我在我的 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 服务器中的场管理员成员。

有什么帮助吗?

【问题讨论】:

  • wcf 服务在哪个用户帐户下运行?它是否具有执行共享点相关流程的必要访问权限?尝试创建一个单独的应用程序池并将所需的标识设置为该池。(考虑到您已在 IIS 中托管 WCF)
  • 它使用的用户帐户是场管理员组成员的成员。它确实具有对 SharePoint 进程的必要访问权限,因为它成功运行而无需在 WCF 中调用相同的 sn-p。我相信我的 WCF 服务在 SharePoint 上没有写操作权限。

标签: c# wcf


【解决方案1】:

听起来你需要整理你的访问策略,因为你将要跨域...

您可能需要在 wcf 服务(或 sdharepoint 服务)的根目录中创建一个 clientaccesspolicy.xmlm 文件

它的内容必须是这样的

<?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>

很明显,一个不安全;)我会让你弄清楚这一点。

【讨论】:

    猜你喜欢
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多