Ste*_*ner 1 asp.net sharepoint
我们有一组代码将在独立的ASP.NET和SharePoint中使用.我想知道是否有合法的方法在CS文件中编写条件代码来检测SharePoint是否存在?
它需要能够在OnPreInit中或之前运行,因为基于此决定,我们将切换MasterPageFile属性,这需要在页面生命周期的早期完成.
我想我可以做一些事情,比如检查"〜/ layouts"目录的存在等,但必须有更好的方法来做到这一点.此外,谁知道 - 出于兼容性原因(图像的位置等),我们可能实际上采用ASP.NET独立模式中的SharePoint目录结构.
即使在独立运行时大部分未使用Microsoft.SharePoint.DLL也可以.
谢谢!
由于您被允许引用Microsoft.SharePoint:
using Microsoft.SharePoint;
// ...
if (SPContext.Current == null)
// Not running in SharePoint
else
// Running in SharePoint
Run Code Online (Sandbox Code Playgroud)
编辑 - NullReferenceException考虑的替代方法:
bool runningInSharePoint = false;
try
{
if (SPContext.Current != null)
runningInSharePoint = true;
}
catch (NullReferenceException e)
{
// SharePoint is not present on the system
}
Run Code Online (Sandbox Code Playgroud)
以上假设您在访问SPContext时抛出了您提到的异常,而不是更早.