WebRequest работает локально, но не при публикации - PullRequest
0 голосов
/ 19 мая 2018

Я столкнулся с проблемой при создании веб-клиента, который использует веб-сервис RESTful с использованием встроенной аутентификации Windows.

Когда я запускаю клиент локально (как я), он работает нормально, и яувидеть мой идентификатор пользователя в журналах IIS.Но когда я запускаю его удаленно, учетные данные не передаются (то есть я не вижу свой идентификатор пользователя в журналах IIS), и я получаю сообщение об ошибке

"Удаленный сервер возвратил ошибку:(401) Несанкционировано. "

И локальный, и опубликованный клиент вызывают одну и ту же службу.Также обратите внимание, что журналы IIS показывают две записи (одну без имени пользователя и одну с именем пользователя), когда я запускаю ее локально.Когда я вхожу из опубликованного местоположения, все еще есть две записи, но ни одна не показывает имя пользователя.

Ниже приведен код, который я использую для вызова:

var request = (HttpWebRequest) WebRequest.Create(ConfigurationManager.AppSettings["positionServicePath"] + "?positionNumberSearch=" + searchString);
        request.Method = "GET";
        request.ContentType = "application/json";
        request.UseDefaultCredentials = true;
        request.PreAuthenticate = false;

        CredentialCache cc = new CredentialCache();
        cc.Add(
            new Uri(ConfigurationManager.AppSettings["positionServicePath"]),
            "Negotiate",
            CredentialCache.DefaultNetworkCredentials);
        request.Credentials = cc;

        // Get the Response
        using (var response = request.GetResponse()){
            var reader = new StreamReader(response.GetResponseStream());

            // Convert the response to objects from Json
            var resultList = JsonConvert.DeserializeObject<IEnumerable<PositionModel>>(reader.ReadToEnd());

            // Return an empty list, if no data was retrieved
            return resultList != null ? resultList.ToList() : new List<PositionModel>();
        }

Любая помощьбудет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Я обнаружил, что ответ на этот вопрос был таким же, как и ответ на следующее сообщение о переполнении стека: Невозможно пройти проверку подлинности в ASP.NET Web Api с помощью HttpClient .

Спасиботем, кто нашел время, чтобы просмотреть это!

0 голосов
/ 19 мая 2018

Я думаю, вам нужно создать пользователя IIS, разрешенного для вашего проекта.

Следуйте этому Анонимный доступ

Второй вариант: Попробуйте включитьanonymous access в методах аутентификации в Microsoft Internet Information Services (IIS).

Step:
1. Open your IIS.
2. In IIS Group:
3. open or select Authentication:
4. Select Anonymous Authentication:
5. On the Left Side select Enabled.

Удачи!

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