我编写了一个作为(PaaS)托管在Azure中的WCF服务.该服务反过来需要与Sharepoint 2013 Online/Office 365交谈.
我正在使用Sharepoint Client对象模型与它通信,但不断收到以下错误:"远程服务器返回错误:(403)禁止"当我们登录通过浏览器访问SharePoint实例时,它通常会带你到 https://login.microsoftonline.com/login.srf,这样您就可以使用Live ID登录.问题是我们使用的是联合帐户而不是Live ID,因此会再次重定向到adfs站点进行登录.我查看了使用基于声明的身份验证的http://www.wictorwilen.se/Post/How-to-do-active-authentication-to-Office-365-and-SharePoint-Online.aspx上的代码示例,但在尝试检索Saml令牌时,这始终会失败,并显示"身份验证失败"消息.
如果我理解正确的话.这样做的一种方法是获取Saml Token,将其传递给SPO,然后SPO将返回两个cookie,我需要将这些cookie包含在使用Client对象模型发出的请求中.问题是我没有找到任何关于如何在C#中使用Federated帐户进行身份验证的正确示例.
任何人都可以指出我正确的方向,关于如何继续授权我的WCF服务与SharePoint交谈.
对不起,如果这是在错误的论坛.我不确定这是Azure问题还是仅仅是SharePoint,因为我对这两种技术都不熟悉.
我还在研究WCF解决方案,该解决方案应该能够查询程序的后端并返回结果.
后端存储一个被调用对象的字典,Groups可以使用以下函数查询它们:
GetGroup 按ID获取单个组GetGroups 按标签获取组列表.该GetGroup罚款的WCF测试客户端,我已经建立了应用程序的工作.它适用于以下代码形式的应用程序:
List<string> values = new List<string>();
GroupServiceClient client = new GroupServiceClient("WSHttpBinding_IGroupService");
www.test.co.uk.programme.programme Group = new www.test.co.uk.programme.programme();
DateTime time = DateTime.Now;
values.Clear();
client.Open();
Group.number = textBox1.Text;
client.GetGroup(ref time, ref Group);
GroupStorageMessage toReturn = new GroupStorageMessage();
toReturn.group = Group;
selectedGroupId = Convert.ToString(toReturn.group.number);
values.Add(Convert.ToString(toReturn.group.number));
values.Add(Convert.ToString(toReturn.group.name));
listBox1.ItemsSource=values;
client.Close();
Run Code Online (Sandbox Code Playgroud)
它GetGroups与WCF测试客户端完美配合,但与我的应用程序无关.
它发送查询,但确实返回Null(请注意,此代码是另一个应用程序,我使用的是引用而不是代理文件)
ServiceReference1.programme Group = new ServiceReference1.programme();
ServiceReference1.GroupServiceClient Client = new ServiceReference1.GroupServiceClient();
DateTime Time = DateTime.Now;
Client.Open();
string[] aa = new string[1]; …Run Code Online (Sandbox Code Playgroud) 我必须为SharePoint开发一个Web部件,用于读取列表并创建树视图.
树视图必须按如下方式组织:根(或根)将由表示类别的选择字段创建,例如Drinks,子节点是包含该类别的行的名称,树视图必须以编程方式创建.
List:
Title(string) Category(Choice)
Coke Drinks
Beer Drinks
Fish Food
Chips Food
Would produce this:
Drinks
Coke
Beer
Food
Fish
Chips
Run Code Online (Sandbox Code Playgroud)
我到目前为止的代码
TreeView treeView;
TreeNode rootNode;
TreeNode childNode;
protected override void RenderContents(System.Web.UI.HtmlTextWriter writer)
{
// render the control
base.RenderContents(writer);
}
protected override void CreateChildControls()
{
List<TreeNode> items = new List<TreeNode>();
base.CreateChildControls();
// get the current site
using (SPSite Site = new SPSite(SPContext.Current.Site.Url + "/UberWiki"))
{
using (SPWeb currentWeb = Site.OpenWeb())
{
// set the tree view properties …Run Code Online (Sandbox Code Playgroud) 我需要从另一个类访问CreateChildControls()创建的控件,这样当我选择文件时,我有一个字符串的路径来引用.
我已经尝试了动态创建的访问控件中的解决方案(c#)和访问动态创建的控件的问题 但是没有快乐谢谢
publicTextBox txtUrl;
protected override void CreateChildControls()
{
Label lblUrl = new Label();
lblUrl.ID = "lblUrl";
lblUrl.Text = "Url: ";
Controls.Add(lblUrl);
TextBox txtUrl = new TextBox();
txtUrl.ID = "txtUrl";
Controls.Add(txtUrl);
AssetUrlSelector picker = new AssetUrlSelector();
picker.ID = "ausUrl";
picker.DefaultOpenLocationUrl = OpenUrl;
picker.AssetUrlClientID = txtUrl.ClientID;
picker.AssetUrlTextBoxVisible = false;
Controls.Add(picker);
Control control = Page.LoadControl(_ascxPath);
Controls.Add(control);
}
Run Code Online (Sandbox Code Playgroud)
从另一个类我应该能够访问文本框
protected void Button1_Click(object sender, EventArgs e)
{
AssetPicker asspi = new AssetPicker();
string aaa = asspi.txtUrl.Text;
}
Run Code Online (Sandbox Code Playgroud)