EpiServer Web服务6.0,使用webservice时进行身份验证时出现问题

时间:2013-03-25 15:00:42

标签: c# .net web-services episerver episerver-6

我正在做一个控制台应用程序,它会告诉EpiServer webservice添加一个页面。我的问题是我无法使用身份验证工作。我在Epi backofice中创建了一个webservice用户。我可以通过浏览器使用我的帐户登录网络服务。

来自控制台应用程序的代码示例如下。

var client2 = new ContentChannel.ContentChannelServiceSoapClient();
client2.ClientCredentials.UserName.UserName = "username";
client2.ClientCredentials.UserName.Password = "password";
client2.Open();

client2.ImportPage1(null, "Pagename", null, null, "sv", newGuid, parentGuid, "pagetype");
client2.Close();

我收到的错误消息是

  

System.Web.Services.Protocols.SoapException:服务器无法执行   处理请求。 ---> EPiServer.Core.EPiServerException:用户这样做   没有“Permission.WebServiceAccess”访问权限的访问权限   远程站点上的服务,供用户使用   EPiServer.WebServices.DataFactoryService.ValidateWebServiceAccess()
  在   EPiServer.WebServices.ContentChannelService.ValidateWebServiceAccess()   在EPiServer.WebServices.ContentChannelService.ImportPage(String   channelId,String pageName,String [] propertyKeys,String []   propertyValues,String cultureName,Guid pageId,Guid parentPageId,   String pageTypeName)---内部异常堆栈跟踪结束---

我不知道我是否需要展示我在配置文件中的表现,但如果我要添加它,请告诉我。 如果有人知道如何离开这里,请回答。 提前谢谢!

修改

我收到带有名称的错误,我得到登录提示,而不是表单身份验证,我可以使用一些webservice方法,例如

ContentChannel.GetMaxRequestLength()

但每当我尝试正确使用webservice或调用ValidateWebServiceAccess()

时,我都会收到此错误
System.Web.Services.Protocols.SoapException: Server was unable to
process request. ---> EPiServer.Core.EPiServerException: The user does
not have the 'Permission.WebServiceAccess' access right to access web
services on the remote site, for user andreas

1 个答案:

答案 0 :(得分:1)

首先,请点击此链接设置和配置网络服务:http://world.episerver.com/Documentation/Items/Tech-Notes/EPiServer-CMS-6/EPiServer-CMS-60/Web-Services/

然后转到EPIServer管理员模式,单击“配置”选项卡,再单击“安全性”子组中的“功能权限”,然后单击“允许用户充当Web服务用户”旁边的编辑。添加您的用户,单击“保存”。

之后打开IE,然后打开您的本地网址http://<yourlocalsite>/WebServices/ContentChannelService.asmx

确保您没有被重定向到登录屏幕,但接收浏览器登录/传递弹出窗口。尝试使用您的webservice用户登录。

还要确保在您的代码中完成此操作:

  

使用.NET soap客户端与EPiServer CMS通信时,将属性SoapHttpClientProtocol.PreAuthenticate设置为true,以确保在每次请求时将用户名和密码发送到服务器