public static string GetWebPartPage(Web web, NetworkCredential credentials, string serverRelativeFileUrl)
        {
            var webPartPageService = new WebPartPagesWebService.WebPartPagesWebService
            {
                Url         = web.Url + "/_vti_bin/webpartpages.asmx",
                Credentials = credentials
            };


            var page = webPartPageService.GetWebPartPage(serverRelativeFileUrl, SPWebServiceBehavior.Version3);

            if (page != null && page.IndexOf("<%@ ", StringComparison.Ordinal) != -1)
            {
                if (page.Length > page.IndexOf("<%@ ", StringComparison.Ordinal))
                {
                    page = page.Substring(page.IndexOf("<%@ ", StringComparison.Ordinal));
                }
            }

            return(page);
        }
        public static string GetWebPartPage(ClientContext ctx, Web web, string serverRelativeFileUrl)
        {
            var webPartPageService = new WebPartPagesWebService.WebPartPagesWebService
            {
                Url = web.Url + "/_vti_bin/webpartpages.asmx"
            };

            //TODO: Network credentials
            var credentials = ctx.Credentials as SharePointOnlineCredentials;

            if (credentials != null)
            {
                var      authCookieString = credentials.GetAuthenticationCookie(new Uri(web.Url));
                string[] parts            =
                {
                    authCookieString.Substring(0, authCookieString.IndexOf('=')),
                    authCookieString.Substring(authCookieString.IndexOf('=') + 1)
                };
                webPartPageService.CookieContainer = new CookieContainer();
                var cookie = new Cookie(parts[0], parts[1])
                {
                    Domain = new Uri(web.Url).Host
                };
                webPartPageService.CookieContainer.Add(cookie);
            }
            else
            {
                //Assumes the site is local intranet and that saved credentials exist in the credential manager
                webPartPageService.Credentials = CredentialCache.DefaultNetworkCredentials;
            }

            var page = webPartPageService.GetWebPartPage(serverRelativeFileUrl, SPWebServiceBehavior.Version3);

            if (page != null && page.IndexOf("<%@ ", StringComparison.Ordinal) != -1)
            {
                page = page.Substring(page.IndexOf("<%@ ", StringComparison.Ordinal));
            }

            return(page);
        }