Pregunta

Esto puede parecer un poco trivial, pero no he podido resolverlo. Estoy abriendo un SPSite y luego intento abrir un SPWeb debajo de ese SPSite. Esto funciona bien en la VPC, que tiene la misma jerarquía de Site Collection / Site, pero en producción, recibo una excepción que me dice que la URL no es válida cuando pruebo el SPSite.OpenWeb (webUrl) ;. He verificado que las URL & # 8217; s son correctas.

El Código:

  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;
        }

Nota:
branchScheduleURL es en realidad la URL completa que incluye también la URL de la Web.

La salida + excepción:

  

URL de la colección de sitios: https://ourSite.com/mocc   
System.ArgumentException: URL no válida: / internal / Scheduletool. en Microsoft.SharePoint.SPSite.OpenWeb (String strUrl, Boolean requireExactUrl) en Microsoft.SharePoint.SPSite.OpenWeb (String strUrl) en MOCCBranchScheduleListWeb.MOCCBranchScheduleListV3.GetConflictListItem (String branchSchedule). instancia de un objeto. en MOCCBranchScheduleListWeb.MOCCBranchScheduleListV3.CheckForConflicts (String [] cfcFlags1, DateTime startTime, DateTime endTime, String [] cfcFlags2)

Nota:
https://ourSite.com/mocc/internal/scheduletool es el SPWeb que estoy intentando abrir.

¿Me estoy perdiendo algo obvio? Cualquier ayuda sería muy apreciada.

Gracias.

¿Fue útil?

Solución

Mira la tabla de ejemplos en la parte inferior de esta página .

Intente no enviar ningún parámetro al método OpenWeb () (segunda fila).

Otros consejos

Intente obtener el objeto SPWeb para "Interno" primero. luego obtenga la SubWeb SPWebCollection para eso y el objeto. A partir de eso, intente obtener el objeto SPWeb para " ScheduleTool " utilizando el método GetSubwebsForCurrentUser ().

Dice que la URL de su colección de sitios es / mocc, por lo que su SPWeb debajo sería algo así como / mocc / internal / Scheduletool. Entonces haz algo como

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top