1

Microsoft Graph .NET Client Libraryを使用してUser.Managerフィールドを設定するヒントを教えてください。私はhow to do this via a direct REST callを知っているが、できるだけそれらの呼び出し(ラッパーをバイパス)を避けたい。以下のコードで、私はマネージャープロパティをクリアすることができました。Microsoft Graph .NETクライアントライブラリを使用してマネージャを割り当てます

client = new GraphClient(...); 
var builder = new DirectoryObjectWithReferenceRequestBuilder(
    client.Users["<userid>"].Manager.Request().RequestUrl,client 
); 
builder.Request().DeleteAsync().Wait() 

しかし、私はまだ私がメンバーの参照(as described here)のためのPUTリクエストを構築することを可能にするクラスを見つけ出すことはできません。私は次のコードを試しました:

var mgr = new DirectoryObject(); 
mgr.Id = "<Id of the user that should be set as manager>"; 

var usrPatch = new User(); 
usrPatch.Manager = mgr; 

client.Users["<Id of the user to be updated>"].Request().UpdateAsync(usrPatch).Wait(); 

このコードは例外をスローしませんが、マネージャーも更新しません。要求が間違っています。上記のコードはPUTの代わりに "base"オブジェクトにPATCHを送ります。上記のコードによって生成された

要求:

graphClient.Users[newUser.Id].Manager.Reference.Request().DeleteAsync(); 

しかし、我々のようなものを持っている必要があります。

 
PATCH https://graph.microsoft.com/v1.0/users/[Id of the user to be updated] HTTP/1.1 
SdkVersion: graph-dotnet-1.0.1 
Content-Type: application/json 
Host: graph.microsoft.com 
Content-Length: 45 Expect: 100-continue 

{"id":"[Id of the user that should be set as manager]"} 

応答は私がマネージャーを削除するには、次の参照204

+0

これは、ライブラリ内のギャップであるかもしれないように見えます。これを指摘してくれてありがとう。確認して、あなたに連絡しましょう。 –

答えて

1

ですマネージャーを割り当てるには以下を入力してください:

graphClient.Users[newUser.Id].Manager.Reference.Request().AddAsync(manager); 

私はこれを修正するためにバグを報告し、更新します。 「マネージャ」を更新するまで

0

回避策が完全にサポートされています。

var authToken = "<get your token here>"; 
var client = new GraphClient(...); 

var usrId = "<id of the user to update>" 
var mgrId = "<id of the manager>" 

var url = client.Users[usrId].Manager.Reference.Request().RequestUrl; 

var httpClient = new HttpClient(); 
httpClient.DefaultRequestHeaders.Authorization = 
    new AuthenticationHeaderValue("Bearer", authToken); 

var content = new StringContent(
    client.HttpProvider.Serializer.SerializeObject(
     new ReferenceRequestBody 
     { 
      ODataId = 
       $"{client.BaseUrl}/directoryObjects/{mgrId}" 
     }), 
    Encoding.Default, 
    "application/json"); 

var resp = httpClient.PutAsync(url, content).Result; 
if (!resp.IsSuccessStatusCode) 
{ 
    // throw exception/log etc 
} 
関連する問題