Обновление службы данных WCF возвращает 401 - неавторизовано: доступ запрещен из-за неверных учетных данных - PullRequest
2 голосов
/ 01 ноября 2010

У меня есть служба данных WCF, и я пытаюсь использовать метод UpdateObject на клиенте DataServiceContext. Когда я вызываю метод SaveChanges, я получаю следующую страницу ошибки:

Несанкционировано: доступ запрещен из-за неверных учетных данных
У вас нет прав для просмотра этого каталога или страницы с использованием предоставленных вами учетных данных.

У кого-нибудь есть идеи, как я могу это исправить? Я нашел this , который теоретически решил бы проблему, но установка этого доступа к диску не является реалистичным решением для производственной службы. Имейте в виду, что при запуске этой службы WCF Data на моей локальной машине она работает просто отлично. Код C # для моего звонка ниже:

        public override void SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection)
    {
        var userName = ( string ) context[ "UserName" ];
        var isAuthenticated = ( bool ) context[ "IsAuthenticated" ];
        if (userName != null && userName.Length >= 1 && collection.Count >= 1)
        {
            var allNames = string.Empty;
            var allValues = string.Empty;
            byte[] buf = null;
            PrepareDataForSaving( ref allNames, ref allValues, ref buf, true, collection, isAuthenticated );
            if (allNames.Length != 0)
            {
                var client = GetDataContext( );
                var profile = client.ProfileViews.Where(p => p.UserName == userName).FirstOrDefault();
                if (profile == null)
                {
                   profile = new ProfileView() { UserName = userName };
                    client.AddToProfileViews(profile);
                }
                profile.PropertyNames = allNames;
                profile.PropertyValuesString = allValues;
                profile.PropertyValuesBinary = buf;
                profile.LastUpdateDate = DateTime.UtcNow;


                client.UpdateObject(profile);
                client.SaveChanges( );
            }
        }
    }

Ответы [ 2 ]

3 голосов
/ 12 июля 2012

У меня была похожая проблема с приложением Silverlight, использующим службы данных WCF.Пользователи могли просматривать данные в приложении - SELECTS из базы данных функционировали - но они получали то же «401 - Несанкционированный: доступ запрещен из-за неверных учетных данных».Вы описываете, когда они пытались сохранить изменения в базе данных (т. е. в тот момент, когда SaveChanges был выполнен в коде).Основной проблемой стала проблема с разрешениями для самой папки приложения IIS.Чтобы исправить это, нам пришлось предоставить пулу приложений, который используется службой WCF, разрешения на запись в папку.

  1. Перейдите в IIS и щелкните правой кнопкой мыши виртуальный каталог, содержащий службу WCF, и выберите «Управление приложением -> Расширенные настройки ...». Запишите имя пула приложений.

  2. В том же контекстном меню выберите Редактировать разрешения ..... На вкладке Безопасность проверьте имена групп и пользователей.

  3. Если имяПул приложений отсутствует.Добавьте его, используя формат имени «IIS APPPOOL \ MyApplicationPoolName».См. Эту полезную ссылку: http://www.bluevalleytech.com/techtalk/blog/assigning-ntfs-folder-permission-to-iis7-application-pools/

  4. Убедитесь, что MyApplicationPoolName имеет разрешения на запись (мы фактически предоставили ему полный контроль)

0 голосов
/ 12 марта 2014

В моем случае у меня была аутентификация Windows с олицетворением с использованием kerberos (useAppPoolCredentials = true) в службе данных WCF, размещенной на IIS 7.5.Странно было то, что я мог успешно выбирать и вставлять данные, но когда я попытался обновить, я получил ошибку 401.3, запрещенную доступу.Решением было предоставить группу AD, указанную в веб-конфигурации (myRole):

<authorization>
  <allow roles="myRole"/>  
  <deny users="*" />
</authorization>

Доступ на чтение и запись к папке приложения, как сказал Дэн Сабин.Сообщение об ошибке было:

Сообщение об ошибке 401.3: у вас нет разрешения на просмотр этого каталога или страницы с использованием предоставленных вами учетных данных (доступ запрещен из-за списков контроля доступа).Попросите администратора веб-сервера предоставить вам доступ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...