0
YouTubeアップロードデータapiを使用してビデオをアップロードしたいのですが、残念ながらビデオをアップロードしようとしたときにタスクがキャンセルされたというエラーが発生しましたawait videosInsertRequest.UploadAsync();
すでにAsyncTimeoutは私の行動は、それが"タスクがキャンセルされました" HTTPクライアントのデフォルトタイムアウト値
public static async Task UploadVideos(List<MyVideo> videosList)
{
foreach (var vid in videosList)
{
await Upload(vid);
}
}
public static async Task Upload(MyVideo newVideo)
{
UserCredential credential;
using (var stream = new FileStream("G:\\client_secret_783534382593-0cn4gm229raqq97kdu0ghsj9hqfsc5o1.apps.googleusercontent.com.json", FileMode.Open, FileAccess.Read))
{
credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets,
// This OAuth 2.0 access scope allows an application to upload files to the
// authenticated user's YouTube channel, but doesn't allow other types of access.
new[] { YouTubeService.Scope.YoutubeUpload },
"user",
CancellationToken.None
);
}
var youtubeService = new YouTubeService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = Assembly.GetExecutingAssembly().GetName().Name
});
Video video = new Video();
video.Snippet = new VideoSnippet();
video.Snippet.Title = newVideo.Title;
video.Snippet.Description = newVideo.Description;
video.Snippet.Tags = new string[] { newVideo.Tags };
video.Snippet.CategoryId = newVideo.Category; // See https://developers.google.com/youtube/v3/docs/videoCategories/list
video.Status = new VideoStatus();
video.Status.PrivacyStatus = newVideo.PrivacyStatus; // or "private" or "publi
var filePath = newVideo.Path; // Replace with path to actual movie file.
// YouTubeHandler t = new YouTubeHandler();
using (var fileStream = new FileStream(filePath, FileMode.Open))
{
var videosInsertRequest = youtubeService.Videos.Insert(video, "snippet,status", fileStream, "video/*");
videosInsertRequest.ProgressChanged += videosInsertRequest_ProgressChanged;
videosInsertRequest.ResponseReceived += videosInsertRequest_ResponseReceived;
await videosInsertRequest.UploadAsync();
}
}
static void videosInsertRequest_ProgressChanged(Google.Apis.Upload.IUploadProgress progress)
{
switch (progress.Status)
{
case UploadStatus.Uploading:
Console.WriteLine("{0} bytes sent.", progress.BytesSent);
break;
case UploadStatus.Failed:
Console.WriteLine("An error prevented the upload from completing.\n{0}", progress.Exception);
break;
}
}
static void videosInsertRequest_ResponseReceived(Video video)
{
Console.WriteLine("Video id '{0}' was successfully uploaded.", video.Id);
}
}
}
私はASPと非同期タスク
に新しいですと誰もが私を助けてくださいすることができているのYouTubeのAPIを呼び出す[AsyncTimeout(3600000)]
public async Task <ActionResult> YouTube(int? Id)
{
// await Run();
var dbListVideos = db.Videos.Where(v => v.Id == Id).ToList();
await YouTubeHandler.UploadVideos(dbListVideos);
return View();
}
ある属性は適用されています
この回答を見てください:http://stackoverflow.com/a/35008208/1129995 YouTubeService.HttpClient.Timeoutのタイムアウトを設定しようとしました – Zaki
私はこの答えを見ていますが、私の助けにはなりません! –
[YouTube APIのアップロード「タスクがキャンセルされました」]の複製があります(http://stackoverflow.com/questions/34249180/youtube-api-upload-a-task-was-cancelled) – DaImTo