簡體   English   中英

如何獲取 Sharepoint Online Migration API 日志(使用 c#)

[英]How To Get Sharepoint Online Migration API Logs (using c#)

使用Sharepoint.Client版本 16 包,我們嘗試在 c# 中創建一個MigrationJob ,然后希望查看該遷移作業的狀態和日志。 我們設法使用Site對象上的ProvisionMigrationContainersProvisionMigrationQueue方法來配置容器和隊列。 我們設法上傳了一些文件和清單 XML。 這些 XML 的 ID 和結構中仍然包含一些錯誤,因此我們預計作業會失敗。 但是,我們仍然希望創建作業並輸出一些消息和日志。 不幸的是,消息隊列似乎是空的,日志無處可尋(至少我們找不到它們)。 創建的遷移作業的 Guid 為空 guid: 00000000-0000-0000-0000-000000000000

根據https://docs.microsoft.com/en-us/sharepoint/dev/apis/migration-api-overview ,日志應作為 blob 保存在清單容器中。 但是,您實際上如何找到日志文件的名稱呢? 問題是一切都必須加密,並且不允許在 blob 存儲中列出 blob(嘗試這樣做會導致 403 錯誤)。

所以主要問題是:我們應該如何訪問日志文件? 還有一個額外的問題:假設創建遷移作業的命令是正確的,為什么我們會得到 null guid? 最后一個:為什么隊列是空的? 我可以推測永遠不會創建遷移作業,這就是為什么 guid 全為零的原因,但是我們應該如何知道是什么阻止了作業的創建?

這是創建遷移作業的代碼:

public ClientResult<Guid> CreateMigrationJob()
{
  var encryption = new EncryptionOption
  {
    AES256CBCKey = encryptionProvider.Key
  };
  return context.Site.CreateMigrationJobEncrypted(
    context.Web.Id, 
    dataContainer.Uri.ToString(), 
    metadataContainer.Uri.ToString(), 
    migrationQueue.Uri.ToString(), 
    encryption
  );
}

contextdataContainermetadataContainer都已正確實例化為成員,並已成功用於其他方法。 migrationQueueencryption看起來也不錯,但沒有在其他地方使用過。 加密密鑰已被用於上傳和下載文件,並且在那里工作得很好。

為了完整起見,這里是我們試圖用來檢查隊列中是否有任何東西的代碼:

public void GetMigrationLog()
{
  while (migrationQueue.ApproximateMessageCount > 0) //debug code, this should be done async
  {
    Console.WriteLine(migrationQueue.GetMessage().AsString);
  }
}

它什么都不輸出,因為隊列是空的。 我們希望至少有一條錯誤消息或一條已創建日志的消息(包括日志文件的名稱)。

PS:我們意識到應該可以使用DownloadToFileEncrypted(encryptionProvider, targetFile.ToString(), System.IO.FileMode.Create)下載日志DownloadToFileEncrypted(encryptionProvider, targetFile.ToString(), System.IO.FileMode.Create)是您已經知道找不到的文件名,所以看起來有點傻。

當您在代碼中調用 context.Site.CreateMigrationJobEncrypted 時,它會返回一個 Guid。 日志文件的名稱將是 Import-TheGuidThatWasReturned-ANumberThatStartsAt1ButIncrements.log

因此可能會調用第一個日志文件。

進口-AE9525D9-3CF7-4D1A-A9E0-8AB0DF4F09B2-1.log

使用加密不應阻止您閱讀隊列。 如果您以這種方式配置了您的隊列,或者您使用的是租用默認值而不是您自己的租用,則您將無法讀取該隊列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM