如何在SharePoint中为匿名用户允许文件上传
问题描述:
我想允许匿名用户上传SharePoint中的文件。 经过一番研究,我编写了这个代码,允许匿名用户上传。但匿名用户无法登录并被要求登录。 请帮助我。我的代码有什么问题?如何在SharePoint中为匿名用户允许文件上传
public string CreateSPFilet(string spServerURL, string tempLibrary, string folder, Stream fileStream, bool overwrite)
{
string strError = "";
string fileName = "";
try
{
if (!SPSite.Exists(new Uri(spServerURL)))
{
strError += ERROR01;
}
else
{
SPSite tempSite = new SPSite(spServerURL);
SPUserToken systoken = tempSite.SystemAccount.UserToken;
using (SPSite site = new SPSite(spServerURL, systoken))
{
SPWeb oWebsite = site.OpenWeb();
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite elevatedSite = new SPSite(site.ID))
{
using (SPWeb eevatedWeb = elevatedSite.OpenWeb(oWebsite.ID))
{
oWebsite.AllowUnsafeUpdates = true;
string targetUrl = SPUrlUtility.CombineUrl(oWebsite.ServerRelativeUrl, tempLibrary);
SPFolder target = oWebsite.GetFolder(targetUrl);
SPFileCollection files = target.Files;
SPFile file = target.Files.Add(fileName, fileStream, overwrite);
oWebsite.AllowUnsafeUpdates = false;
}
}
});
}
}
答
在上次using语句中,您需要使用对提升对象的引用,而不是其他引用。像这样:
eevatedWeb.AllowUnsafeUpdates = true;
string targetUrl = SPUrlUtility.CombineUrl(eevatedWeb.ServerRelativeUrl, tempLibrary);
SPFolder target = eevatedWeb.GetFolder(targetUrl);
SPFileCollection files = target.Files;
SPFile file = target.Files.Add(fileName, fileStream, overwrite);
eevatedWeb.AllowUnsafeUpdates = false;
您还需要处理对象tempSite和oWebSite,因为它们不会被上述代码处置。
非常感谢。 我没有注意到它! D: – kevin 2012-04-18 09:58:16