1

匿名ユーザーが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;
                           }
                       }
                   });
                }
            }
4

1 に答える 1

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も破棄する必要があります。

于 2012-04-18T08:56:58.190 に答える