拒绝访问该路径。谷歌api本地iis发布

时间:2015-07-08 07:32:24

标签: c# iis google-api google-calendar-api

当我必须为Google用户验证身份验证时,我无法访问某些文件夹。

当我在IIS上本地发布时,我收到错误:Access to the path '..' is denied

我尝试更改文件夹位置,因此它将位于项目的App_Data中 - 没有运气。

我也试图做these guys正在做的事情,但也没有帮助。

我的代码如下:

            string path = AppDomain.CurrentDomain.BaseDirectory + @"\Json\client_secrets.json";

            using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read))
            {

                try
                {
                    string googlecalendarpath = folderpath + @"\App_Data\GoogleCalendar";

                    credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                        GoogleClientSecrets.Load(stream).Secrets, scopes,
                        _currentAccountNo,
                        //Vær sikker på, at dette er det samme altid, og er unikt, da ens permissions til Google Calendar bliver bundet op på dette!
                        CancellationToken.None, new FileDataStore(googlecalendarpath)).Result;
                }
                catch (Exception ex)
                {
                    return "Cred. FEJL: " +ex.GetFullExceptionString();
                }
            }

,其中folderpath来自Server.MapPath("~/App_Data"),而_currentAccountNo是唯一的。 在网上关注这些例子时,我看不到我所遗漏的内容,也无法看清我做错了什么。

  • 感谢

3 个答案:

答案 0 :(得分:0)

尝试以管理员模式运行Visual Studio。

答案 1 :(得分:0)

FileDatastore默认将文件放在%appData%中。通常我会做类似的事情。 (假设我使用" _currentAccountNo"以及)

new FileDataStore("Console.Analytics.Auth.Store")  

然后当我调用它时,我得到一个名为

的目录
%AppData%\Roaming\Console.Analytics.Auth.Store
该目录中的

现在存在一个名为

的文件
Google.Apis.Auth.OAuth2.Responses.TokenResponse-[account Num]

将目录发送到fileDataStore只是要创建一个目录,其中包含您在%appdata%中发送到fileDataStore的目录的名称,这可能不是您想要的。

您可能希望改为使用LocalFileDataStore或更好地创建自己的idatastore实现。

我不确定这是不是你的问题。如果IIS有权访问%appdata%目录,那么设置IIS是多么棘手。这取决于您设置的用户以及运行的应用程序池。例如,如果内存服务azure只能访问临时目录。

答案 2 :(得分:0)

我在使用IIS时在本地解决了这个问题。

更改应用程序池的高级设置 - 身份。使用您的登录用户而不是"应用程序池"或"网络"或"本地"。

Image of Advanced settings in Application Pool