Session WebAPI的表单身份验证在5分钟后过期

Session WebAPI的表单身份验证在5分钟后过期,session,asp.net-web-api2,session-management,Session,Asp.net Web Api2,Session Management,我一直在创建一个web项目,在该项目中,我使用表单身份验证,使用cookies验证用户是否正在进行身份验证 FormsAuthentication.SetAuthCookie(".auth", false); 一切正常,但当我在共享主机上托管时,会话在不活动5分钟后过期。我已经在配置中将超时设置为60分钟 <authentication mode="Forms"> <forms name=".auth" protection="All" timeout

我一直在创建一个web项目,在该项目中,我使用表单身份验证,使用cookies验证用户是否正在进行身份验证

FormsAuthentication.SetAuthCookie(".auth", false);
一切正常,但当我在共享主机上托管时,会话在不活动5分钟后过期。我已经在配置中将超时设置为60分钟

<authentication mode="Forms">
            <forms name=".auth" protection="All" timeout="60"/>
        </authentication>
我检查用户是否在web API中经过身份验证,我的API看起来像

    [Authorize]
    [RoutePrefix("api/value")]
    public class ValueController : ApiController
    {
        // GET api/value
        [Route("get")]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }

    }
[授权]
[RoutePrefix(“api/value”)]
公共类ValueController:ApiController
{
//获取api/值
[路线(“获取”)]
公共IEnumerable Get()
{
返回新字符串[]{“value1”,“value2”};
}
}
我知道这是一种非常陈旧/糟糕的通过cookie进行验证的方法,但这是我的遗留应用程序,我无法更改身份验证结构并使用Owin

有人能提出为什么它在共享主机上不活动5分钟后过期吗?它在我的本地IIS上正常工作,直到60分钟才过期

<authentication mode="Forms">
            <forms name=".auth" protection="All" timeout="60"/>
        </authentication>

感谢你的帮助

原因是主机提供商清除会话,解决方案是在web.config中添加machineKey

<system.web>
    <machineKey decryption="AES" decryptionKey="ddE3434J4K3J3KLNDFPSODIFSFLKJW34L3OIUF" validation="HMACSHA256" validationKey="07dfdDUIEJSLDJFKLSJFEIOUR3989F8SDF90DF9D0F9DF9SD0F90SDF09SD0F9DF" />
</system.web>


(请注意,这是一个示例密钥。您必须生成一个密钥并添加到配置中)

除网站会话超时外,应用程序池还有空闲超时。默认值为20分钟。这不是由web.config控制的,您需要在iis设置中更改它。但在“我的共享主机”上没有选择选项。提供商不允许我们更改此设置。(爸爸)那时你可能无法增加它。这篇文章似乎证实了godaddy空闲超时是5分钟:-你可以打开godaddy的支持票证询问,否则你可以改变你的主机或创建某种自动web请求程序来保持网站的有效性好的。我会联系godaddy@Moiz我知道这是一个老帖子,但你和戈达迪有什么关系吗?共享主机上的空闲超时(设置为5分钟)扼杀了我的性能,因为只有大约8个用户(圣诞节礼物的快速家庭网站),所以每次他们访问该网站时,应用程序池都会重新启动,这需要花费很长时间。我打电话给godaddy,想看看是否可以获得他们为单独问题生成的机器密钥:。他们说我们的订阅在“共享”服务器下,他们不能提供机器密钥。需要一个专用服务器。