使用c#编写APP上传文件到sharepoint2013出错

starseeker7 2013-12-12 05:21:01
加精
如题,一个曾经正常使用的代码
因公司把sharepoint2003升级到了2013,这个客户端程序就无法使用了- -
提示错误"The remote server returned an error: (403) Forbidden.“

try
{
using (WebClient IR = new WebClient())
{
IR.Credentials = new NetworkCredential("username", "pwd", "域名");
IR.UploadFile(@"http://sitename/file/filename.xml", "put", @"F:\File\filename.xml");
}

}
catch (System.Net.WebException webex)
{
MessageBox.Show("Update File Error(System.Net.WebException):" + webex.Message.ToString());
}
catch (Exception ex)
{
MessageBox.Show("Update File Error(System.Exception):" + ex.Message.ToString());
}


网上查询了参考资料
http://blog.symprogress.com/2013/07/upload-wsp-file-to-office365-sp2013-using-webclient/
但按照他提供的代码会提示无法调用Microsoft.SharePoint.Client.Runtime的情况
求各位大大解惑,谢谢
...全文
1855 47 打赏 收藏 转发到动态 举报
写回复
用AI写文章
47 条回复
切换为时间正序
请发表友善的回复…
发表回复
咱_结_婚_吧_ 2013-12-29
  • 打赏
  • 举报
回复
虽然不懂 可是看起来很牛逼的样子 顶一个
LPGG 2013-12-27
  • 打赏
  • 举报
回复
总体感觉,现在微软的东西,要安全,就变复杂了,复杂程度和安全程度不成正比,要简洁,就不安全了,或者不好使用了——真是无语了——哈哈——
不下小 2013-12-25
  • 打赏
  • 举报
回复
代码部分采用的5楼的代码 求解惑
lhw7791086 2013-12-24
  • 打赏
  • 举报
回复
lude8880 2013-12-23
  • 打赏
  • 举报
回复
但是切记不要在工作服务器上设断点,否则公司就瘫痪了。
lude8880 2013-12-23
  • 打赏
  • 举报
回复
然后看看这个用户在那个域里就成了
lude8880 2013-12-23
  • 打赏
  • 举报
回复
你可以跟踪一下再上传文件之前产生连接以后服务器端是什么用户想做上传工作。
云满笔记 2013-12-21
  • 打赏
  • 举报
回复
看样子肯定是WP了吧
accountsinfo 2013-12-19
  • 打赏
  • 举报
回复
mark,多谢分享。
u013208890 2013-12-18
  • 打赏
  • 举报
回复
感谢分享,研究下
starseeker7 2013-12-18
  • 打赏
  • 举报
回复
引用 29 楼 farawayplace613 的回复:
这是我的配置:
我放弃寻找设置了,将sharepoint更改为允许匿名访问 在debug利用VS的简易IIS的时候能够正常上传成功到sharepoint了, 但是发布到服务器IIS,调用时, 会在这一步 context.ExecuteQuery(); 提示下面错误 Access denied. You do not have permission to perform this action or access this resource. 这个应该哪里有问题呢?
雪域豪侠 2013-12-18
  • 打赏
  • 举报
回复
nettman 2013-12-18
  • 打赏
  • 举报
回复
益达达人 2013-12-18
  • 打赏
  • 举报
回复
原来sharepoint这么高级啊!!!
starseeker7 2013-12-18
  • 打赏
  • 举报
回复

原因找到了,果然是IIS设置错误- -
我把图中红框处填写后就能正常访问了
看来仅在application pools中修改identity不够
还需要在对应APP 上设置advanced settings->physical path credentials
万分感谢farawayplace613 的支持
starseeker7 2013-12-17
  • 打赏
  • 举报
回复
引用 8 楼 farawayplace613 的回复:
不是的,你的网站的对应的Appliction pool的运行帐号,改下,改成有权限上传文件到SharePoint的: http://technet.microsoft.com/en-us/library/cc771170(v=ws.10).aspx
谢谢大大回复,, 不过我更改了APP pool设置为有权限域名用户后依然提示403 然后我果断更改了我的web service代码,新代码如下

			using (var context = new ClientContext(“https://mysharepointurl/mydocfolder/”))
            {
                var passWord = new SecureString();
                foreach (var c in "mypassword") passWord.AppendChar(c);
                ICredentials var = new SharePointOnlineCredentials("me@mydomain.com", passWord);
                context.Credentials = var;
                var web = context.Web;
                var newFile = new FileCreationInformation {Content = FileBytes, Url =Url+FileName};
                var docs = web.Lists.GetByTitle("Documents");
                docs.RootFolder.Folders.GetByUrl("Test").Files.Add(newFile);
                context.ExecuteQuery();
             }
更改为这样以后,虽然不会提示403,,,但是会在运行 ICredentials var = new SharePointOnlineCredentials("me@mydomain.com", passWord); 这一步时提示错误 The system cannot find the file specified. (Exception from HRESULT: 0x80070002) 额,这个不是没有用到文件啊- -怎么会提示这个错误,,orz,求解惑
天涯海角 2013-12-17
  • 打赏
  • 举报
回复
不是的,你的网站的对应的Appliction pool的运行帐号,改下,改成有权限上传文件到SharePoint的: http://technet.microsoft.com/en-us/library/cc771170(v=ws.10).aspx
starseeker7 2013-12-17
  • 打赏
  • 举报
回复
引用 6 楼 farawayplace613 的回复:
做成Web service的话,要确保运行Web service的帐号有权限上传文件到SharePoint.
请问这个是指需要在sharepoint的权限中增加,IIS_USRS吗? 还是需要在代码中增加权限相关的赋予? 有没有类似的范例或者网页地址给,,求分享一个,,,
天涯海角 2013-12-17
  • 打赏
  • 举报
回复
这是我的配置:
starseeker7 2013-12-17
  • 打赏
  • 举报
回复
PS: 我的环境是windows2008 R2 standard+IIS7.5+sharepoint2013 products
加载更多回复(24)

3,242

社区成员

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

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