2015-02-06 133 views
3

我已经创建了一个带有基本OAuth的webapi和一个使用ajax访问api的移动应用程序。我将AccessTokenExpireTimeSpan设置为1天,如下所示。该请求的授权被拒绝

static Startup() 
{ 
    PublicClientId = "self"; 
    UserManagerFactory =() => 
     new UserManager<IdentityUser>(new UserStore<IdentityUser>()); 
    OAuthOptions = new OAuthAuthorizationServerOptions 
    { 
     TokenEndpointPath = new PathString("/Token"), 
     Provider = new ApplicationOAuthProvider(PublicClientId, UserManagerFactory), 
     AuthorizeEndpointPath = new PathString("/api/UserAccount/ExternalLogin"), 
     AccessTokenExpireTimeSpan = TimeSpan.FromDays(1), 
     AllowInsecureHttp = true    
    }; 
} 

一切工作正常,在我的本地电脑,直到我部署它的托管网站。

我的应用程序可以登录并接收新的令牌,并且使用此令牌的应用程序(每2秒)可以访问webapi一整天,直到令牌过期。 但是,如果我停止应用程序(不停止应用程序)访问webapi 5到6分钟,然后我再次启动它,我会得到一个“401 - 授权已拒绝此请求。”并需要申请一个新的令牌。

现在,因为它在我的电脑上工作,有什么我错过了,可能会导致这个被拒绝,如会议,饼干,设置在主机系统等?

仅供参考我的电脑是使用IIS7.5和主机系统由PleskWin供电,并使用IIS8.5

+0

与论坛网站不同,我们不使用“谢谢”或“任何帮助表示赞赏”,或在[so]上签名。请参阅“[应该'嗨','谢谢',标语和致敬从帖子中删除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be - 从帖子中删除)。顺便说一句,它是“提前致谢”,而不是“感谢先进”。 – 2015-02-11 06:46:15

回答

1

我设法各地的Plesk玩,发现在ASP.Net配置为网站设置>会话设置>身份验证模式,我将它从原来的“无”改变为“Windows”,它的工作原理。 5到6分钟后,它不会像我之前所说的那样给我带来错误。 仅供参考,在同一部分下,还有一个会话超时(分钟),它被设置为20,并且我没有从部署开始就改变它。

我仍然不确定此设置的作用或它与IIS的关系。任何人都可以启发我吗?

0

我正在处理完全相同的问题,但我的设置已在'Windows'上准备就绪,但我无法使其正常工作。

更改此处的设置(ASP.Net Configuration for Website)会导致无效的连接字符串,因为它不会很好地写入web.config。 您可以告诉我,如果您的web.config在更改此设置(“无”为“Windows”)后发生了变化? 您是否知道您的提供商之前是否遇到过这些问题?