2012-04-18 21 views
1

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

答えて

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

+0

ありがとうございました。 私はそれに気づかない! :D – kevin

関連する問題