Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# YouTube数据API v3在部署到生产服务器上时无法工作_C#_Visual Studio_Youtube Api_Youtube Data Api - Fatal编程技术网

C# YouTube数据API v3在部署到生产服务器上时无法工作

C# YouTube数据API v3在部署到生产服务器上时无法工作,c#,visual-studio,youtube-api,youtube-data-api,C#,Visual Studio,Youtube Api,Youtube Data Api,我想创建一个流并直播它。该代码在本地主机上运行得非常好,但部署时会出现问题。它甚至没有请求谷歌账户的授权。看起来它甚至没有和它互动 “/123456”应用程序中出现服务器错误 访问路径“YouTubeDataAPISample.YouTube.Auth.Store”的权限为 否认 描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源 异常详细信息:System.UnauthorizedAccessException:访问 路径“Yo

我想创建一个流并直播它。该代码在本地主机上运行得非常好,但部署时会出现问题。它甚至没有请求谷歌账户的授权。看起来它甚至没有和它互动

“/123456”应用程序中出现服务器错误

访问路径“YouTubeDataAPISample.YouTube.Auth.Store”的权限为 否认

描述:在执行过程中发生未处理的异常 当前的web请求。请查看堆栈跟踪以了解更多信息 有关错误的信息及其在代码中的来源

异常详细信息:System.UnauthorizedAccessException:访问 路径“YouTubeDataAPISample.YouTube.Auth.Store”被拒绝

ASP.NET无权访问请求的资源。考虑 向ASP.NET请求授予对资源的访问权限 身份ASP.NET通常具有基本进程标识 {MACHINE}\ASPNET(位于IIS 5上)或IIS 6和IIS 7上的网络服务,以及 在以下情况下使用的IIS 7.5上配置的应用程序池标识: 应用程序没有模拟。如果申请是 通过模拟,身份将为 匿名用户通常是IUSR_MACHINENAME或经过身份验证的 请求用户

要授予ASP.NET对文件的访问权限,请在文件中的文件上单击鼠标右键 在浏览器中,选择属性并选择安全选项卡。单击添加 添加适当的用户或组。突出显示ASP.NET帐户, 并选中所需访问权限的框

源错误:

在执行过程中生成了未处理的异常 当前web请求。关于货物来源和位置的信息 可以使用下面的异常堆栈跟踪来识别异常

堆栈跟踪:

[UnauthorizedAccessException:访问路径 “YouTubeDataAPISample.YouTube.Auth.Store”被拒绝。] System.IO.\uuu Error.WinIOErrorInt32错误代码,字符串maybeFullPath +217 System.IO.Directory.InternalCreateDirectoryString完整路径,字符串路径,对象dirSecurityObj,布尔值checkHost+11130032 System.IO.Directory.InternalCreateDirectoryHelperString路径,布尔值 检查主机+136 System.IO.Directory.CreateDirectoryString路径 +33 Google.api.Util.Store.FileDataStore..ctorString文件夹,布尔完整路径+72 Template.BusinessLogic.Implementation.YouTubeAPI.AuthenticateOauthString clientId、字符串clientSecret、字符串用户名、字符串apiKey+220 Template.BusinessLogic.Implementation.YouTubeAPI..ctor+63 模板.MVC5.Controllers.VideosController..ctor+25

[TargetNotificationException:的目标已引发异常 调用。]System.RuntimeTypeHandle.CreateInstanceRuntimeType 类型、布尔publicOnly、布尔noCheck、布尔和canBeCached、, RuntimeMethodHandleInternal&ctor、Boolean&bNeedSecurityCheck+0 System.RuntimeType.CreateInstanceSlowBoolean publicOnly,布尔型 skipCheckThis、布尔填充缓存、堆栈爬网标记和堆栈标记+113 System.RuntimeType.CreateInstanceDefaultTorBoolean publicOnly, 布尔skipCheckThis、布尔填充缓存、堆栈爬网标记和堆栈标记 +232 System.Activator.CreateInstanceType类型,布尔非公共+83 System.Activator.CreateInstanceType类型+66 System.Web.Mvc.DefaultControllerActivator.CreateRequestContext requestContext,类型controllerType+55

[InvalidOperationException:尝试创建时出错 类型为“Template.MVC5.Controllers.videoscocontroller”的控制器。制作 确保控制器具有无参数公共构造函数。] System.Web.Mvc.DefaultControllerActivator.CreateRequestContext requestContext,类型controllerType+178 System.Web.Mvc.DefaultControllerFactory.GetControllerInstanceRequestContext requestContext,类型controllerType+77 System.Web.Mvc.DefaultControllerFactory.CreateControllerRequestContext requestContext,字符串控制器名称+88 System.Web.Mvc.MvcHandler.ProcessRequestInitHttpContextBase httpContext、IController和controller、IControllerFactory和factory +191 System.Web.Mvc.MvcHandler.BeginProcessRequestHttpContextBase httpContext,异步回调,对象状态+50 System.Web.Mvc.MvcHandler.BeginProcessRequestHttpContext httpContext, 异步回调,对象状态+48 System.Web.Mvc.MvcHandler.System.Web.IHTTPassynchandler.BeginProcessRequestHttpContext 上下文,异步回调cb,对象外部数据+16 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute +301 System.Web.HttpApplication.executesteppexecutionstep步骤,布尔值&同步完成+155

授权码

private static YouTubeService AuthenticateOauth(string clientId, string clientSecret, string userName, string apiKey)
        {
            string[] scopes = new string[] { YouTubeService.Scope.Youtube,  // view and manage your YouTube account
                                             YouTubeService.Scope.YoutubeForceSsl,
                                             YouTubeService.Scope.Youtubepartner,
                                             YouTubeService.Scope.YoutubepartnerChannelAudit,
                                             YouTubeService.Scope.YoutubeReadonly,
                                             YouTubeService.Scope.YoutubeUpload};


            // here is where we Request the user to give us access, or use the Refresh Token that was previously stored in %AppData%
            UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets { ClientId = clientId, ClientSecret = clientSecret }
                                                                                         , scopes
                                                                                         , userName
                                                                                         , CancellationToken.None
                                                                                         , new FileDataStore("YouTubeDataAPISample.YouTube.Auth.Store")).Result;

            YouTubeService service = new YouTubeService(new YouTubeService.Initializer()
            {
                ApiKey = apiKey,
                HttpClientInitializer = credential,
                ApplicationName = "YouTubeDataAPISample"
            });

            return service;           
        }
用于检索视频的代码

        public PlaylistItemListResponse Videos()
    {
        var playlistItemsListRequest = service.PlaylistItems.List("snippet");

        var channelsListRequest = service.Channels.List("contentDetails");
        channelsListRequest.Mine = true;
        foreach (var find in channelsListRequest.Execute().Items)
        {
            var uploadsListId = find.ContentDetails.RelatedPlaylists.Uploads;

            var nextPageToken = "";
            while (nextPageToken != null)
            {

                playlistItemsListRequest.PlaylistId = uploadsListId;
                playlistItemsListRequest.MaxResults = 50;
                playlistItemsListRequest.PageToken = nextPageToken;

                // Retrieve the list of videos uploaded to the authenticated user's channel.
                var playlistItemsListResponse = playlistItemsListRequest.Execute();

                nextPageToken = playlistItemsListResponse.NextPageToken;
            }
        }
        return playlistItemsListRequest.Execute();
    }

要查找错误,您必须执行以下三项操作之一:

登录到服务器并点击“localhost”以查看详细的错误信息。 编写一些自定义代码以将日志输出到 Ome,这样你就可以读了。 按照您收到的错误消息中的建议禁用customErrors。这是个坏主意,但由你决定。 它应该设置为remoteonly。
您是否尝试按照错误页面上的说明进行操作?它准确地告诉您需要做什么才能看到潜在的问题。您能给我们看一下您的代码吗?如果看不到您试图执行的操作,那么我们实际上无法解决问题。但请记住,它在本地主机上工作,但在部署时不起作用。@mason现在检查问题。您仍然没有包括错误消息的详细信息。按照黄色屏幕上的指示操作-它将显示如何获取这些错误详细信息。包含没有实际错误详细信息的代码不太可能有用。我们已经尝试了您的所有解决方案。1。它适用于本地主机,但不适用于已部署的解决方案。两个人。它不执行try-and-catch块。三个人。它表示引用的对象未设置为对象的实例。因此,在这些try/catch块之外添加日志记录。听起来好像是在抛出错误,对吧?@XolaniChristopher你写的是InnerExeption,它没有任何用处,而且概率为空。您需要ex.Message@KSib问题是YouTubeDataAPISample.YouTube.Auth.Store在我的授权码中。我应该在那里放什么?现在可以用了。谢谢大家抽出时间。问题是,FileDataStoreYouTubeDataAPISample.YouTube.Auth.Store.Result;我将其更改为new FileDataStorePath.CombineAppDomain.CurrentDomain.BaseDirectory,App_Data,true.Result;