我是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应用程序,并在我的Service1类中编写了相同的函数来实现IService1接口。
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服务器中的服务器场管理员。
任何帮助?
答案 0 :(得分:0)
听起来你需要整理你的访问政策,因为你将跨越域名......
您可能需要在wcf服务的根目录中使用clientaccesspolicy.xmlm文件(或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>
显然,一个人不安全;)生病了,因为有点痛苦。