如何允许SharePoint中的匿名用户上载文件

时间:2012-04-18 06:32:22

标签: c# sharepoint sharepoint-2010

我想允许匿名用户在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;
                           }
                       }
                   });
                }
            }

1 个答案:

答案 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对象,因为它们不是由您的上述代码处理的。