2011-01-21 14 views
0

こんにちは、私はクレームベースの認証として設定されているWebアプリケーションの下にサイトコレクションを作成しようとしています にFBAとしてログインし、コードは以下の通りである:ここでは追加するサイトコレクションは、SharePoint 2010の

SPSecurity.RunWithElevatedPrivileges(delegate { 
    using (SPSite site = SPContext.Current.Site) 
    { 
    using (SPWeb web = site.RootWeb) 
    { 
     site.AllowUnsafeUpdates = true; 
     web.AllowUnsafeUpdates = true; 
     try 
     { 
     SPWebApplication web_App = web.Site.WebApplication; 
     web_App.Sites.Add(SiteUrl, SiteTitle, Description, Convert.ToUInt32(Constants.LOCALE_ID_ENGLISH), SiteTemplate, OwnerLogin, "testuser", OwnerEmail); 
     } 
     catch (Exception ex) 
     { 
     string s = ex.Message + " " + ex.StackTrace; 
     throw; 
     } 
     finally 
     { 
     web.AllowUnsafeUpdates = false; 
     site.AllowUnsafeUpdates = false; 
     } 
    } 
    } 
}); 

私は "CustomMembership:UserName"として "OwnerLogin"を渡しています。しかし、web_App.Sites.Addは "ex = {コードが最適化されているかネイティブフレームが呼び出しスタックの上にあるため式を評価できません。この点に関する助けは本当に感謝しています。
よろしく、
水田

+0

を私はここでの問題の根本だとは思わないが、あなたはすべき'SPContext.Current.Site'プロパティによって返された' SPSite'オブジェクトを処分しないでください(すなわち、 'using'を削除してください) - http://blogs.msdn.com/b/rogerla/archive/2008/02/12/sharepoint -2007-and-wss-3-0-dispose-patterns-by-example.aspx#SPDisposeCheckID_220 –

+0

_layoutsフォルダにあるaspxページから呼び出されます。 Paddy – Paddy

答えて

1

あなたの標高コードが間違っている、あなたは完全に新しいSPSiteオブジェクトとSPWeb参照を作成する必要があります。私はそれが別の文脈にあることを私に示すために、通常 "c"という接頭辞を付けます。

SPSecurity.RunWithElevatedPrivileges(delegate() { 
    using (SPSite csite = new SPSite(SPContext.Current.Site.ID)) { 
     using (SPWeb cweb = csite.OpenWeb(SPContext.Current.Site.RootWeb.ID)) { 
      //do stuff 
     } 
    } 
}); 
0

OwnerLoginパラメータがないCustomMembership含まれている必要があります接頭辞を - このパラメータの値として平野ユーザー名を渡します。ところで


、Webアプリケーションオブジェクトを得ることのあなたの方法は、不必要に複雑である - このようなものを使用します。

SPWebApplication webApplication = SPWebApplication.Lookup(new System.Uri("Web-Application-URL")); 
+0

これらのヒントはありがとうございます。しかし、この問題は依然として続く。私はこの質問でなされたすべての提案に従ったが、誰も私のために働いていない。まだ解決策を手に入れようとしています。 – Paddy

+0

@Paddy(1)このスレッドhttp://social.technet.microsoft.com/Forums/en-US/sharepoint2010programming/thread/51ad553a-ec7b-46b6-873c-d49b2544c55f/には、同様の問題の詳細な説明が含まれています。あなたにいくつかのアイデアを与えるかもしれない。 (2)管理Webサービスの使用を検討しましたか?http://msdn.microsoft.com/en-us/library/websvcadmin.admin.createsite.aspx?私はFBA Webアプリケーションの下でサイトコレクションを作成するためにWebサービスを使用していますが、うまくいきます。 –

+0

@Paddyさらに多くの研究とテストを行った後、** _layouts'フォルダ**に置かれた '.aspx'ページから直接新しいサイトコレクションを作成することはできません。おそらく、サイトコレクションユーザー(FBAかどうかは関係ありません)には、ファーム管理者かもしれないという特権が必要ですか?私の意見では、組み込みの管理Webサービスを使用するか、カスタムWebサービスを作成する必要があります(これは 'ADMISAPI'フォルダに展開する必要があります)。 –

関連する問題