MOSS 跨域调用Webservices

Watingalone 2011-06-02 12:33:59
A、B是两个不同的服务器且都在自己的域环境下,现在A通过webservices调用B lists提示没权限401错误,感觉Webservices

是没问题的,因为能A能连接到B而且换成控制台应用程序是能得到数据集的但是web中不行。

部分源码,求解答。
sharecypcMOSS.Lists list = new sharecypcMOSS.Lists();  
//获得链接凭证
list.Credentials = new System.Net.NetworkCredential("sharecypc\administrator", "web_2009", "域地址");
//创建XML节点对象
list.UseDefaultCredentials = true;//这句代码是设置信任的,否则会报没有权限的错误。请求因 HTTP 状态 401 失败:Unauthorized”
XmlDocument doc = new XmlDocument();
//创建查询Query节点元素
XmlNode query = doc.CreateNode(XmlNodeType.Element,"Query","");
//创建查询ViewFields节点元素
XmlNode ViewFields = doc.CreateNode(XmlNodeType.Element, "ViewFields","");
if (listName.Equals("通知公告"))
{
query.InnerXml = "<OrderBy> <FieldRef Name='ID' Ascending='FALSE' /> </OrderBy> ";
}
else {
query.InnerXml = "<OrderBy> <FieldRef Name='ID' Ascending='FALSE' /> </OrderBy> <Where> <Eq> <FieldRef Name='_x6240__x5c5e__x90e8__x95e8_' /> <Value Type='Text'>生产技术部</Value> </Eq> </Where>";
}

ViewFields.InnerXml = "<FieldRef Name='ID' /> <FieldRef Name='Title' /> <FieldRef Name='Created' />";
XmlNode items = list.GetListItems(listName, null, query, ViewFields, rowlimit, null,null);//执行这步提示没权限401错误
//加载返回的XML文档结果集
doc.LoadXml(items.OuterXml);
//把xml转换成文件流
StringReader xmlreader = new StringReader(doc.OuterXml);
DataSet ds = new DataSet();
//把流解析 到DataSet
ds.ReadXml(xmlreader);
xmlreader.Dispose();
return ds.Tables[1];

我已经被这个问题困扰了几天,求大侠们赐教。
...全文
200 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Watingalone 2011-06-12
  • 打赏
  • 举报
回复
啊,你们也太 此处省略1万字。本来就穷,还增分啊。。
Oo云 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 foxdave 的回复:]
蹭分
[/Quote]
yayiba2020 2011-06-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yun_liang1028 的回复:]
引用 5 楼 foxdave 的回复:
蹭分
[/Quote]
:)
少冲 2011-06-07
  • 打赏
  • 举报
回复
已经True了。

[Quote=引用 6 楼 newsilen 的回复:]
引用 3 楼 watingalone 的回复:
不好意思问题解决了,偶要结贴了。避免后面的仁兄出现这个问题,这里给我出我的方法。很简单的,注释list.UseDefaultCredentials = true;就可以跨越调用webservices了,但是同一个域环境下要加上这段代码的。。


呵呵 来晚了 你这个把Credentials 搞多了一个吧 先用的是自己new出来的 后面又用了d……
[/Quote]
夏至夕陽 2011-06-07
  • 打赏
  • 举报
回复
還來得及蹭分吧
NewSilen 2011-06-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 watingalone 的回复:]
不好意思问题解决了,偶要结贴了。避免后面的仁兄出现这个问题,这里给我出我的方法。很简单的,注释list.UseDefaultCredentials = true;就可以跨越调用webservices了,但是同一个域环境下要加上这段代码的。。
[/Quote]

呵呵 来晚了 你这个把Credentials 搞多了一个吧 先用的是自己new出来的 后面又用了default,你试试在同一个域环境下去掉new的那个能不能正常执行
Watingalone 2011-06-02
  • 打赏
  • 举报
回复
真的很着急,求大侠们赐教啊。。
Justin-Liu 2011-06-02
  • 打赏
  • 举报
回复
蹭分
alf7927 2011-06-02
  • 打赏
  • 举报
回复
list.Credentials = new System.Net.NetworkCredenti("sharecypc\administrator", "web_2009", "域地址");
//创建XML节点对象
list.UseDefaultCredentials = true;/

你这矛盾啊。。。后面的credential把前面的重写了。
Watingalone 2011-06-02
  • 打赏
  • 举报
回复
不好意思问题解决了,偶要结贴了。避免后面的仁兄出现这个问题,这里给我出我的方法。很简单的,注释list.UseDefaultCredentials = true;就可以跨越调用webservices了,但是同一个域环境下要加上这段代码的。。
amao_1985 2011-06-02
  • 打赏
  • 举报
回复
是不是可以尝试下调用sharepoint自带的webservices去访问呢?

3,245

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 SharePoint
社区管理员
  • SharePoint社区
  • 霖雨 - LinyuLoveTJ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧