У меня есть этот код:
using ( var site = new SPSite( myUrl ) ) {
using ( var web = site.AllWebs[0] ) {
// read-only operations
}
}
"myUrl" является верхним URL домена с WSS 3.0. Аутентификация установлена на Windows.
Если я запускаю этот код из командной строки под учетной записью "external_app_user", все в порядке. Но если я запускаю этот код из веб-службы (вне веб-приложения WSS), то результатом будет HTTP-ответ «401 НЕСАНКЦИОНИРОВАН» вместо SOAP-ответа. Это странно, потому что этот код находится в блоке try-catch, и, если возникнет какое-либо исключение, я вернул собственное сообщение об ошибке в ответе SOAP.
Код работает на том же компьютере, что и WSS.
Если я запускаю веб-сервис из веб-браузера на компьютере, на котором работает веб-служба, отображается классическая форма входа в Windows. Если я запускаю веб-службу из веб-браузера на другом компьютере, я получаю только HTTP-ответ «401 НЕСАНКЦИОНИРОВАН».
Веб-сервис работает под правильным аккаунтом. Эта учетная запись имеет доступ к WSS (протестировано через сайт sharepoint). Если я пытаюсь получить «System.Security.Principal.WindowsIdentity.GetCurrent (). Name», возвращается правильное имя пользователя.
В web.config установлено ".
Кто-нибудь имеет представление, что не так?