0

これは少し些細なことに思えるかもしれませんが、私はそれを理解することができませんでした. SPSite を開き、その SPSite の下で SPWeb を開こうとしています。これは、同じサイト コレクション/サイト階層を持つ VPC では正常に機能していますが、本番環境では、SPSite.OpenWeb(webUrl); を試すと、URL が無効であることを示す例外が発生します。URL が正しいことを確認しました。

コード:

  try
        {
            SPSite scheduleSiteCol = new SPSite(branchScheduleURL);
            lblError.Text += Environment.NewLine + "Site Collection URL: " + scheduleSiteCol.Url;
            SPWeb scheduleWeb = scheduleSiteCol.OpenWeb(branchScheduleURL.Replace(scheduleSiteCol.Url, "")); //<--- Throws error on this line
            SPList scheduleList = scheduleWeb.GetList(branchScheduleURL + "/lists/" + SPContext.Current.List.Title);
            return scheduleList.GetItemById(int.Parse(testID));
        }
        catch (System.Exception ex)
        {
            lblError.Text += Environment.NewLine + ex.ToString();
            return null;
        }

注:
branchScheduleURL は、実際には Web の URL も含む URL 全体です。

出力 + 例外:

サイト コレクションの URL: https://ourSite.com/mocc
System.ArgumentException: 無効な URL: /internal/scheduletool。MOCCBranchScheduleListWeb.MOCCBranchScheduleListV3.GetConflictListItem (文字列 branchScheduleURL、文字列 testID) System.NullReferenceException: オブジェクト参照がに設定されていません。オブジェクトのインスタンス。MOCCBranchScheduleListWeb.MOCCBranchScheduleListV3.CheckForConflicts (文字列 [] cfcFlags1、DateTime startTime、DateTime endTime、文字列 [] cfcFlags2) で

注:
https://ourSite.com/mocc/internal/scheduletoolは、開こうとしている SPWeb です。

明らかな何かが欠けていますか?どんな助けでも大歓迎です。

ありがとう。

4

3 に答える 3

3

このページの下部にある例の表を見てください。

OpenWeb()メソッド(2行目)にパラメーターを送信しないようにしてください。

于 2008-10-10T18:45:00.460 に答える
1

最初に「Internal」の SPWeb オブジェクトを取得してみてください。次に、そのオブジェクトとオブジェクトの SubWeb SPWebCollection を取得します。そこから、GetSubwebsForCurrentUser() メソッドを使用して、「ScheduleTool」の SPWeb オブジェクトを取得してみてください。

于 2008-10-11T11:53:01.227 に答える
0

サイト コレクションの URL は /mocc であると表示されているため、その下の SPWeb は /mocc/internal/scheduletool のようになります。だから次のようなことをしてください

string webServerRelativeUrl = site.ServerRelativeUrl + "/internal/scheduletool"

于 2008-10-13T20:17:26.637 に答える