Been looking at the following link to try and setup webservices (in order to enable a cache refresh across servers in a load balanced environment)
However I am proper stuck when trying to access the webservice. I get the windows login prompt fine and my custom user credentials are accepted. Then I get an episerver form login which my custom user is unable to log in on. Always returns the blank form. I can use my own domain login here and it returns the webservice fine.
I've done the necessary with basic authentication in web.config etc etc. Pinging through the remote web sites setup returns:
The requested web service was found but it not gives a correct response (check the user credentials is correct, that the WebService folder in the IIS not accepts anonymous access for the requested site and the remote site has the BasicAuthentication http module installed in its web.config), see the log file for the full error message.
I am pretty much stuck with this one and have been fighting it for a few evenings now. Any ideas would be much appreciated?
If your EPiServer form returns to a blank form without any error messages, it means that your user is authenticated. (Otherwise, you would have gotten a login failed error)
Your errormessage says "see the log file for the full error message". Does your log file contain more information?
Does your user belong to a group (eg. webadmin, webedit)? Does this group exist in EPiServer? And if so, did you list it in the <location path="WebServices"> section in your config file?
Ben, when settings this up on IIS6 I had to change settings for authentication in the IIS as well, this was about two years ago, so I don't remember what I did though. :(
That's right, you need to enable asmx in IIS.
On 2003 server:- right click your website, select properties - go to the home directory tab- click configuration- click add under application extensions- Enter this information: - Exceutable: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll - Extension: asmx - Verbs: Limit to GET,HEAD,POST,DEBUG - Remove check for "Verify that file exists"
(Same in Win XP actually)
Thanks for your response. In reply:
I added the user to the <location="WebServices"> section. The user has a role created in episerver and is a member of the Users group on the servers. I've checked the IIS settings for asmx and they are all set accorindingly.
I have just discovered that if I have a tab open to the admin UI (logged on as my normal domain user) tehn try the webservices from a second tab entering my custom log on details actually works and brings up the webservices.
This is the error from the episerver log file when I try a ping request from a remote site setup:
2010-05-17 22:52:28,309 ERROR  EPiServer.UI.Admin.RemoteSite.PingSite - Can't ping site, because, EPiServer.Core.EPiServerException: An error occured while talking to "client2(http://clientserver2/WebServices/DataFactoryService.asmx)": The request failed with the error message:--<html><head><title>Object moved</title></head><body><h2>Object moved to <a href="%2fUtil%2flogin.aspx%3fReturnUrl%3d%252fWebServices%252fDataFactoryService.asmx">here</a>.</h2></body></html>
--. ---> System.Net.WebException: The request failed with the error message:--<html><head><title>Object moved</title></head><body><h2>Object moved to <a href="%2fUtil%2flogin.aspx%3fReturnUrl%3d%252fWebServices%252fDataFactoryService.asmx">here</a>.</h2></body></html>
--. at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall) at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object parameters) at EPiServer.WebServices.DataFactoryClient.InternalInvoke(String methodName, Object parameters) --- End of inner exception stack trace --- at EPiServer.WebServices.DataFactoryClient.ReportError(Exception e) at EPiServer.WebServices.DataFactoryClient.InternalInvoke(String methodName, Object parameters) at EPiServer.WebServices.DataFactoryClient.Ping() at EPiServer.DataAbstraction.RemoteSite.Ping(String remoteSiteName) at EPiServer.UI.Admin.RemoteSite.PingSite(Object sender, CommandEventArgs e)
Just to make sure: Since you are creating a custom cache refresh, your requirements are suitable to standard EPiServer functionality? If you are looking for e.g. cache refresh when an editor publishes a page, you should have a look at this post instead of creating your own:
Just realized that the page you are reffering to are for EPiServer 4, there are a newer version for EPiServer 5 here:http://world.episerver.com/Documentation/Items/Tech-Notes/EPiServer-CMS-5/EPiServer-CMS-5-R2/Web-Services/
You're having some authentication problems... You are being redirected to the login page.