Веб-служба EpiServer 6.0, проблемы с аутентификацией при использовании веб-службы

Я делаю консольные приложения, которые сообщают веб-службе EpiServer о добавлении страницы. Моя проблема в том, что я не могу заставить работать аутентификацию. Я создал пользователя веб-сервиса в бэк-офисе Epi. Я могу войти в веб-сервис через браузер со своей учетной записью.

Пример кода из консольного приложения выглядит следующим образом.

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() at EPiServer.WebServices.ContentChannelService.ImportPage(String channelId, String pageName, String[] propertyKeys, String[] propertyValues, String CultureName, Guid pageId, Guid parentPageId, String pageTypeName) --- Конец внутреннего трассировка стека исключений ---

Я не знаю, нужно ли мне показывать, как я это сделал, в файлах конфигурации, но если я должен добавить это, просто скажите мне. Если кто-нибудь знает, как пройти отсюда, пожалуйста, ответьте. Заранее спасибо!

РЕДАКТИРОВАТЬ

Я получаю сообщение об ошибке с именем, я получаю приглашение для входа в систему, а не аутентификацию форм, я могу использовать некоторые методы веб-сервиса, такие как

ContentChannel.GetMaxRequestLength()

но я получаю эту ошибку всякий раз, когда пытаюсь правильно использовать веб-сервис или вызывать 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

person Andreas    schedule 25.03.2013    source источник


Ответы (1)


Прежде всего, перейдите по этой ссылке для установки и настройки веб-службы: http://world.episerver.com/Documentation/Items/Tech-Notes/EPiServer-CMS-6/EPiServer-CMS-60/Web-Services/

Затем перейдите в режим администратора EPIServer, перейдите на вкладку «Конфигурация», затем в подгруппу «Разрешения для функций в безопасности» и нажмите «Изменить» рядом с «Разрешить пользователю действовать в качестве пользователя веб-службы». Добавьте своего пользователя, нажмите Сохранить.

После этого откройте IE и откройте свой локальный URL http://<yourlocalsite>/WebServices/ContentChannelService.asmx

Убедитесь, что вы не перенаправлены на экран входа в систему, но получаете всплывающее окно входа/пароля в браузере. Попробуйте войти под своим пользователем веб-сервиса.

Также убедитесь, что это сделано в вашем коде:

При взаимодействии с EPiServer CMS с помощью клиента мыла .NET установите для свойства SoapHttpClientProtocol.PreAuthenticate значение true, чтобы убедиться, что имя пользователя и пароль отправляются на сервер при каждом запросе.

person Lanorkin    schedule 25.03.2013
comment
Привет! Он добавлен, так что, к сожалению, это не проблема. - person Andreas; 25.03.2013
comment
Хорошо, просто чтобы убедиться - вы читали это, части, касающиеся местоположения и аутентификации? world.episerver .com/Documentation/Items/Tech-Notes/ - person Lanorkin; 25.03.2013
comment
Это руководство, которому я следовал. - person Andreas; 25.03.2013
comment
Что я вижу из рефлектора, вы можете получить такое исключение с пустым именем пользователя только в том случае, если пользователь не аутентифицирован. Можете ли вы подтвердить, что когда вы открываете свой локальный URL-адрес http://‹yoursite›/WebServices/ContentChannelService.asmx, скажем, в IE, вы не перенаправляетесь на экран входа в систему, а получаете всплывающее окно входа/пароля в браузере? Кроме того, я не вижу этого в вашем коде: When communicating with EPiServer CMS using a .NET soap client, set the property SoapHttpClientProtocol.PreAuthenticate to true to make sure that the username and password are sent to the server at every request - person Lanorkin; 25.03.2013