Hi, I am new on EPiServer. Actually I want to get contents of pages of website (which is build in EPiServer CMS) and want to use that contents to make mobile site. Is there any way or web service that I can use to get contents of all pages? What i need to do, like do I need to make a new web application that will call webservice or anything else? can anyone please help me with this issue?
You can find a PageStoreService.asmx in the Webservices folder of your www root. But be careful, getting content from a page might more difficult then you would think. Especially if you have highly complex pages with XHTML properties that has dynamic content in them.
You can also take a look at the open source project Mobile Pack (http://mobilepack.codeplex.com/)
Ok. I can use PageStoreService.asmx to get page contents. But I need to do some sort of Authentication. Actually my client has its site on epi server CMS, and i want to transform that site to mobile site. So to do this, i need to get content of the site and use that contents to make mobile site in my own way (not using mobile pack). Is webservice is only way to get the contents or I can use any other way? I think Mirroring and exporting XML can only be done between sites build in EPiServer. What is the best method to get site contents? (Sorry i am new to EPiServer thats why i don't know much about it)
Yes, I already look at Mobile pack for EPiServer. But the problem I am facing right now is that it is jQuery mobile base. So i am affraid, site may not work on old phones like Nokia N70, N73 etc (or hand sets not supporting jQuery Mobile). I think site built using mobile pack will only works on smart phones (iPhone, Android, Samsung Glaxy etc). Is there any solution that I can use only Redirect section of mobile pack for my site (not build in Mobile pack)?
As Mobile Pack is an open source solution, you can use whatever you feel in it. Poke around and see how they solved the redirection.
http://world.episerver.com/Documentation/Items/Tech-Notes/EPiServer-CMS-6/EPiServer-CMS-60/Web-Services/#Creating Your Own Web Services. It tells you how to configure EPiServer CMS to allow users to connect to the webservice. It also have some basic examples on how to consume it.
Thanks alot for your help. My CMS has Alloy Technologies website, and i am trying to get content of Alloy site pages.
I made .Net application and change all authentication setting as mentioned. My application called PageStoreService.asmx webservice to get content of the page. Code is:
PageStoreService pageContent = new PageStoreService(); LanguageSelector selector = new LanguageSelector("en-US");
RawPage page = new RawPage();
page = pageContent.GetPage(new EPiServer.Core.PageReference(423), selector, EPiServer.Security.AccessLevel.Read);
but i am getting this exception: "The type initializer for 'EPiServer.Security.PrincipalInfo' threw an exception."
Is there is still problem with my authentication setting or this exception is related to some other issue?
Take a look at this post where Allan shows how to output the PageData as JSON (and other formats): http://labs.episerver.com/en/Blogs/Allan/Dates/2010/6/Codemania-Partner-Summit-2010/. Might be easier to work against from a client application.
Hope this helps.
Did you do the troubleshooting step by checking that you get a login prompt when going to the webservice in the browser?
Try using the method ValidateWebServiceAccess() to see if the user you're using do have necessary access. Did you set the user (NetworkCredentials) in the code before making the call?
Could you post the stack trace you receive?
Yes, When I browse the webservice (http://[MYDOMAIN]/WebServices/PageStoreService.asmx), there is no login prompt for it. It showed me the page with all methods PageStoreService Webservice has.
When I tried to put following code in web.config of episerver to enable basic authentication.
<httpModules> <add name="BasicAuthentication" type="EPiServer.Security.BasicAuthentication, EPiServer" />
it gives me this error:
For NetworkCredential, When i tried to create object for NetworkCredential, I am unable to do this. I is not showing me Credentials object. like I am unable to do following (code in bold):
PageStoreService pageContent = new PageStoreService(); pageContent.Credentials = new NetworkCredential("xxx", "xxx");
And When I tried to use ValidateWebServiceAccess(), it gives me the same error. Stack trace is:
[NullReferenceException: Object reference not set to an instance of an object.] EPiServer.Configuration.Settings.get_Instance() +37 EPiServer.UriSupport.get_InternalUIUrl() +45 EPiServer.UriSupport.get_UIUrl() +45 EPiServer.UriSupport.ResolveUrlFromUIBySettings(String path) +34 EPiServer.Security.PrincipalInfo..cctor() +115[TypeInitializationException: The type initializer for 'EPiServer.Security.PrincipalInfo' threw an exception.] EPiServer.Security.PrincipalInfo.get_Current() +0 EPiServer.WebServices.DataFactoryService.ValidateWebServiceAccess() +30 GetPageContents.ProcessRequest(HttpContext context) in m:\Programs\GatwickGetContent\GetPageContents.ashx:20 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
The code looks OK, why can't you create the NetworkCredential object?
Maybe a stupid question. But why can't you develop new EPiServer templates instead and host them in the same application?
I am not able to get the page contents using webservice.
Actually I was not able to access the application code. Now i am able to access clients application. I created an template in it and got the page contents now in XML format.
Thanks all for your help.