The request failed with HTTP status 401: Unauthorized问题怎么解决
我之前写了一个关于两个sharepoint list (功能是:list1 取 list2 中 Items ) webpart, 调试时正常运行(此处的运行时通过手动点击button 来实现list1 取 list2 中items的功能)。 现在我需要把这同步的功能通过Timer Job 来实现,即通过timer job 让系统自动运行, 但是 我在调试中有几个个问题:
问题1: 调试中出现的为问题:“ The request failed with HTTP status 401: Unauthorized。” 相同的代码,怎么会在之前的button下调试时可以成功,而放到Timer Job 里面却出现了权限的问题呢?
对于这个问题,因为我是让list2 中的数据从list1 去过来的,而这两个list 在不同服务器上,这个的实现上我采用了调用 list webservice 实现了, 在权限问题上我想过如果用 SPSecurity.RunWithElevatedPrivileges(delegate() ) 这个方法,那要怎么去用呢 ?
一下是我在 Timer Job 中 Job类 中 Execute () 方法中片段代码:
public override void Execute(Guid contentDbId)
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPWebApplication webApplication = this.Parent as SPWebApplication;
//SPContentDatabase contentDb = webApplication.ContentDatabases[contentDbId];
//SPList myDestinationList = contentDb.Sites[0].RootWeb.Lists["List1"];
//SPWeb myDestinationWeb = contentDb.Sites[0].OpenWeb();
nsplist.Lists List1 = new nsplist.Lists();
List1.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
List1.Url = "http://gdcckm.chn.test.com/teams/nsp/_vti_bin/Lists.asmx";
System.Xml.XmlDataDocument xmlDoc = new System.Xml.XmlDataDocument();
string listName = "{0F57EBB4-B86E-4156-BA15-409DA6769422}";
string rowLimit = "10000";
System.Xml.XmlNode nodeListItems;
System.Xml.XmlElement query = xmlDoc.CreateElement("Query");
System.Xml.XmlElement viewFields = xmlDoc.CreateElement("ViewFields");
System.Xml.XmlElement queryOptions = xmlDoc.CreateElement("QueryOptions");
nodeListItems = List1.GetListItems(listName, null, query, null, rowLimit, null);
xmlDoc.LoadXml(nodeListItems.OuterXml);
XmlNodeList nlist = xmlDoc.GetElementsByTagName("z:row");
SPSite myDestinationSite = new SPSite("http://hswsrdm0");
SPWeb myDestinationWeb = myDestinationSite.OpenWeb();
SPList myDestinationList = myDestinationWeb.Lists["List2"];
..........
............
});
} 可是在这个地方就出现了 权限那个问题,
请大侠们抽出点宝贵时间,帮忙看看。