我想允许匿名用户在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;
}
}
});
}
}
答案 0 :(得分:2)
在最后一个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对象,因为它们不是由您的上述代码处理的。