Бот работает на местном но не на лазурном - PullRequest
0 голосов
/ 18 мая 2018

Я работаю над чат-ботом, который помогает пользователям SharePoint в локальной сети загрузить файл.Бот работает на локальном компьютере, но возвращает код 500 при тестировании в Azure.

Я использую библиотеку Csom для навигации по дереву сайтов и _api SharePoint для получения всех семейств сайтов.Я провел некоторый тест, и я не думаю, что именно Csom является причиной этой ошибки, а скорее всего NetworkCredential, который не работает в Azure.

Так можно ли использовать учетные данные в Azure?

Я знаю, что проблема связана с этой функцией

public void GetAllSiteCollections(string url)
    {

        HttpWebRequest endpointRequest = (HttpWebRequest)HttpWebRequest.Create(url + "/_api/search/query?querytext='contentclass:sts_site'&trimduplicates=false&rowlimit=100");

        endpointRequest.Method = "GET";
        endpointRequest.Accept = "application/json;odata=verbose";
        NetworkCredential cred = new NetworkCredential(Login, Mdp, DomaineUser);
        endpointRequest.Credentials = cred;
        HttpWebResponse endpointResponse = (HttpWebResponse)endpointRequest.GetResponse();

        WebResponse webResponse = endpointRequest.GetResponse();
        Stream webStream = webResponse.GetResponseStream();
        StreamReader responseReader = new StreamReader(webStream);
        string response = responseReader.ReadToEnd();

        JObject jobj = JObject.Parse(response);

        for (int ind = 0; ind < jobj["d"]["query"]["PrimaryQueryResult"]["RelevantResults"]["Table"]["Rows"]["results"].Count(); ind++)
        {

            string urlCollection = jobj["d"]["query"]["PrimaryQueryResult"]["RelevantResults"]["Table"]["Rows"]["results"][ind]["Cells"]["results"][6]["Value"].ToString();
            string nomCollection = jobj["d"]["query"]["PrimaryQueryResult"]["RelevantResults"]["Table"]["Rows"]["results"][ind]["Cells"]["results"][3]["Value"].ToString();
            if (urlCollection.Contains("myLocalDomain/sites/") == true)
            {
                string[] split = urlCollection.Split('/');
                ClientCtx = new ClientContext(Domaine + "/sites/" + split[4]);
                using (ClientCtx = new ClientContext(ClientCtx.Url))
                {
                    ClientCtx.Credentials = new NetworkCredential(Login, Mdp, DomaineUser);
                    Web rootWeb = ClientCtx.Site.RootWeb;
                    ClientCtx.Load(rootWeb);

                    BasePermissions bp = new BasePermissions();
                    bp.Set(PermissionKind.AddListItems);

                    ClientResult<bool> viewListItems = rootWeb.DoesUserHavePermissions(bp);


                    ClientCtx.ExecuteQuery();
                    if (viewListItems.Value)
                    {
                        ListDesSiteCollections.Add(nomCollection, split[4]);
                    }

                }
            }
        }

        responseReader.Close();

    }

Когда я проверяю журналы на http://botName.azurewebsites.net/api/messages, я получаю ответ «Запрошенный ресурс не поддерживает метод http»GET ' "

...