2016-07-14 14 views
1

SharePoint Onlineサーバーまたは社内のものに接続しようとしているかどうかを判断する方法があるかどうかを知りたい(Credentialsオブジェクトタイプが異なるため)。私はC#でCSOM APIをSharePoint 2013とSharePoint Onlineサーバーで使用しています。SharePoint Onlineに接続しているのか、CSOM APIで構内にしているのかをプログラムで確認

これまでのところ、ClientContextオブジェクト自体に役立つものは見つかっていないので、ログインしているかどうかをユーザーが確認できるようにしたいと考えています。「DOMAIN \ ACCOUNT」または「account @ domain」です。 tld "がありますが、SharePoint OnlineなどでDomain \ Accountログインタイプを使用できるかどうかはわかりません。

できない場合は、ユーザーにサーバーの種類を教えてもらいます。

+0

あなたはこのようにそれを取得することができます\ username'を入力します。 – dstarkowski

+0

ええと、新しくSharePointの新しいオンラインサイトを変更せずに使用すると、より互換性の高いコードにすることができます。 ATMドメインアカウント、Office Online、Guestのログイン方法を示すドロップダウンリストがあります。この情報を使ってCredentialオブジェクトを変更して、SPオンラインサーバーでADFSを使用している場合にユーザーが「ドメインアカウント」を選択できるようにしています:) _(参加してくれてありがとう、他の情熱的な開発者と話すのは素晴らしいです)_ –

答えて

1

SharePointから送信されたHTTP応答には、MicrosoftSharePointTemaServicesというヘッダーがあります。バージョン番号が入っています。 2013年には15.0.0.xxxxとO365 16.0.0.xxxxが返されます(少なくとも将来はバージョンにバンプが発生する可能性があります)。私は今、それをチェックする方法はありませんが、私が正しくリコール場合は、O365でADFSを使用する場合、あなたはまた、形式 `ドメインにログインを使用し

var request = WebRequest.Create("https://sharepoint.contoso.com"); 
try 
{ 
    request.GetResponse(); //fails with 401 
} 
catch (WebException ex) 
{ 
    var version = ex.Response.Headers["MicrosoftSharePointTeamServices"]; 
} 
+0

We ClientContextインスタンス(これらの属性は、最初のClientContext.ExecuteQueryメソッドの後に使用可能)を介して自動的にバージョン番号を取得します。[screenshot](http://imgur.com/V62AZC2)。詳細は、[ClientContextのメンバ](https://msdn.microsoft.com/en-us/library/office/microsoft.sharepoint.client.clientcontext_members.aspx)を参照してください。 –

+0

しかし、私はこのアプローチが嫌いです。誰かがSharePoint 2016をオンプレミスで使用する場合、サーバーのバージョンは16.xになります。この番号をオンライン版にハードコードすると問題になります。私は自分のコードを可能な限りダイナミックにしたい。ここで私が望むのは、それが「敷地内」か「オンライン」かを教えてくれるブール値(または列挙型)です。今のところ、私はちょうどサーバーの種類についてユーザーに尋ねる、私は選択肢があるとは思わない:) –

+0

@HendrickxMatthiasはい、ClientContextからバージョンを取得できますが、まずコンテキストを作成し、どのように知っているか:)しかし、あなたは2016年頃です。バージョンを確認するのは、プレリリース版が2013の場合のみです。 – dstarkowski

関連する問題