我正在做一个控制台应用程序,它会告诉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
答案 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,以确保在每次请求时将用户名和密码发送到服务器