определить, работает ли ASCX / ASPX в SharePoint? - PullRequest
1 голос
/ 17 июня 2009

У нас есть набор кода, который будет использоваться как в автономном ASP.NET, так и в SharePoint. Мне интересно, есть ли какой-нибудь законный способ записи условного кода в файл CS, чтобы определить, присутствует ли SharePoint?

Он должен быть в состоянии запускаться в OnPreInit или перед ним, потому что на основе этого решения мы будем переключать атрибут MasterPageFile, и это необходимо сделать в начале жизненного цикла страницы.

Полагаю, я могу что-то сделать, например, проверить наличие каталога "~ / layouts" и т. Д., Но для этого должен быть лучший способ. И кроме того, кто знает - по соображениям совместимости (расположение изображений и т. Д.) Мы могли бы фактически принять структуру каталогов SharePoint в автономном режиме ASP.NET.

Можно требовать Microsoft.SharePoint.DLL, даже если он работает в основном автономно.

Спасибо!

Ответы [ 2 ]

7 голосов
/ 17 июня 2009

Так как вам разрешено ссылаться на Microsoft.SharePoint:

using Microsoft.SharePoint;
// ...

if (SPContext.Current == null)
    // Not running in SharePoint
else
    // Running in SharePoint

Редактировать - альтернативный подход с учетом NullReferenceException:

bool runningInSharePoint = false;
try
{
    if (SPContext.Current != null)
        runningInSharePoint = true;
}
catch (NullReferenceException e)
{
    // SharePoint is not present on the system
}

Выше предполагается, что упомянутое вами исключение выдается при доступе к SPContext, а не раньше.

2 голосов
/ 17 июня 2009

Интересно, лучше ли вам не включать dll SharePoint в ваш прямой код ASP.NET. Если вы частично / подклассуете бит SharePoint и включаете две цели сборки, вы сможете использовать дополнительный код, необходимый для SharePoint, без изменения сборки ASP.NET.

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