Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > ASP.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2016, 17:43   #1
lebedun
Пользователь
 
Регистрация: 27.03.2009
Сообщений: 12
По умолчанию Sharepoint с размещением у постовщика

Создал аккаунт Sharepoint на cloudappsportal.com, настроил как Сайт разработчика
Для размещения исполняемого кода использую IIS
Создал приложение для Sharepoint с размещением у постовщика.
Но при запуске появляется сообщение "An error occurred while processing your request"
Посмотрел содержание http запроса
SPAppToken:""
AppContext, AppContextToken, AccessToken вообще отсутствуют


Не могу понять почему возникает такая ситуация?
lebedun вне форума Ответить с цитированием
Старый 31.01.2016, 16:40   #2
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Не понятно.
Если вы используете IIS для размещения кода, причем тут SharePoint? Это обычное веб приложение Asp.net.
Для SharePoint, во-первых, используется специальный шаблон проекта и для разработки нужно, чтобы на компьютере разработчика стоял локальный SP foundation вместе с соответствующей студией, а во-вторых, решение для SharePoint может быть либо уровня фермы, либо site, либо web.

Ни о каком IIS речи не идет, если вы действительно разрабатываете решение для SharePoint.

Если вы пишите веб приложение (да и не только веб можно писать) и хотите работать с SharePoint - вам дорога к CSOM (client sharepoint object model).

Исходя из того что вы написали получается, что вы пытаетесь использовать объектную модель, которая работает только в контексте SP вне SP, т.к. отличительная особенность объектной модели SP - там все объекты начинаются с SP
в CSOM объекты SP и работа с ними малость отличается от внутренней модели.
Akeloya вне форума Ответить с цитированием
Старый 31.01.2016, 18:41   #3
lebedun
Пользователь
 
Регистрация: 27.03.2009
Сообщений: 12
По умолчанию

само приложение расположено на локальном компьютере IIS
на удаленном сервере Sharepoint установлена ссылка приложения.
если щелкнуть по ссылке этого приложение в Sharepoint то происходит перенаправление на localhost (сервер постовщика).
Только в http запросе
SPAppToken:""
а AppContext, AppContextToken, AccessToken вообще отсутствуют
Поэтому на странице появляется "An error occurred while processing your request"
В чем тут проблема?
lebedun вне форума Ответить с цитированием
Старый 31.01.2016, 20:46   #4
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Цитата:
Сообщение от lebedun Посмотреть сообщение
само приложение расположено на локальном компьютере IIS
на удаленном сервере Sharepoint установлена ссылка приложения.
если щелкнуть по ссылке этого приложение в Sharepoint то происходит перенаправление на localhost (сервер постовщика).
Только в http запросе
SPAppToken:""
а AppContext, AppContextToken, AccessToken вообще отсутствуют
Поэтому на странице появляется "An error occurred while processing your request"
В чем тут проблема?
Эээээ....
Вы вообще понимаете как работает в данном случае механизм аутентификации? Как у вас настроена аутентификация в шарепоинте? Как у вас настроена аутентификация в вашем приложении (в т.ч. настройки на IIS)?

С чего вы вообще взяли что токены НЕ должны быть пустые?
Если что, шарепоинт тут работает сам по себе, ваше приложение работает само по себе и они друг о друге ничего не знают.
Я повторю - "ваше приложение бы знало о шарепоинте всё что можно" если бы это было решение установленное в шарепоинт.

А если вы считаете, что шарепоинт должен знать что-либо о вашем приложении при том что оно не в нем - объясните каким образом.
Akeloya вне форума Ответить с цитированием
Старый 01.02.2016, 00:33   #5
lebedun
Пользователь
 
Регистрация: 27.03.2009
Сообщений: 12
По умолчанию

Приложение на sharepoint и localhost разворачиваются при запуске отладки.
Visual studio загружает на серверы sharepoint и localhost соответствующие файлы и информацию.
При нажатии на ссылку в Sharepoint происходит перенаправление браузера на localhost с передачей в http запросе необходимой информации.
Но в моем случае, как я понимаю, этой информации недостаточно.
Это функция приложения на localhost подкласса Page
Код:
protected void Page_PreInit(object sender, EventArgs e)
        {
            Uri redirectUrl;
            switch (SharePointContextProvider.CheckRedirectionStatus(Context, out redirectUrl))
            {
                case RedirectionStatus.Ok:
                    return;
                case RedirectionStatus.ShouldRedirect:
                    Response.Redirect(redirectUrl.AbsoluteUri, endResponse: true);
                    break;
                case RedirectionStatus.CanNotRedirect:
                    Response.Write("An error occurred while processing your request.");
                    Response.End();
                    break;
            }
        }
CheckRedirectionStatus(Context, out redirectUrl) вызывает функции находящиеся в автоматически сгенерированных Visual studio файлах.
В них то и происходит проверка токенов.
Вот часть цепочки этих вызовов:
Код:
protected override SharePointContext CreateSharePointContext(Uri spHostUrl, Uri spAppWebUrl, string spLanguage, string spClientTag, string spProductNumber, HttpRequestBase httpRequest)
        {
            string contextTokenString = TokenHelper.GetContextTokenFromRequest(httpRequest);
            if (string.IsNullOrEmpty(contextTokenString))
            {
                return null;
            }

            SharePointContextToken contextToken = null;
            try
            {
                contextToken = TokenHelper.ReadAndValidateContextToken(contextTokenString, httpRequest.Url.Authority);
            }
            catch (WebException)
            {
                return null;
            }
            catch (AudienceUriValidationFailedException)
            {
                return null;
            }

            return new SharePointAcsContext(spHostUrl, spAppWebUrl, spLanguage, spClientTag, spProductNumber, contextTokenString, contextToken);
        }
Код:
public static string GetContextTokenFromRequest(HttpRequestBase request)
        {
            string[] paramNames = { "AppContext", "AppContextToken", "AccessToken", "SPAppToken" };
            foreach (string paramName in paramNames)
            {
                if (!string.IsNullOrEmpty(request.Form[paramName]))
                {
                    return request.Form[paramName];
                }
                if (!string.IsNullOrEmpty(request.QueryString[paramName]))
                {
                    return request.QueryString[paramName];
                }
            }
            return null;
        }
Без токенов на странице появляется "An error occurred while processing your request"
lebedun вне форума Ответить с цитированием
Старый 01.02.2016, 17:38   #6
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Какой шаблон вы использовали при создании проекта?
Akeloya вне форума Ответить с цитированием
Старый 01.02.2016, 17:54   #7
lebedun
Пользователь
 
Регистрация: 27.03.2009
Сообщений: 12
По умолчанию

Office/Sharepoint
Приложение для Sharepoint
lebedun вне форума Ответить с цитированием
Старый 01.02.2016, 20:07   #8
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

For provider-hosted apps that support multi-tenancy, here is one more tip. For your app to distinguish which request comes from which SharePoint tenant, SPHostUrl should be always appended as part of the query string to any app URLs. The existence of SPHostUrl is important to the SharePointContext helper because it can know which SharePoint host site the user should be redirected to for authentication if the context has not been created.

похоже, что пользователь у вас не может пройти авторизацию при проверке возможности перехода на ваше приложение. Т.е. контекст провайдер не знает куда редиректить пользователя.

В дебагере проверьте protected override SharePointContext CreateSharePointContext

https://blogs.msdn.microsoft.com/off...arepoint-2013/
Akeloya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с размещением victor5133 HTML и CSS 1 01.11.2012 18:44
Visual Basic проблема с размещением программы на пк Rudimo Помощь студентам 0 26.03.2012 04:24