我有一个项目,它使用MVC 4和ServiceStack,在Azure服务中的Web角色中托管,以便在IIS Express中进行开发。我正在使用自定义身份验证提供程序,就像CustomAuthenticationMvc示例项目中的那个;它使用Membership类进行身份验证,并使用Roles类填充角色。我开始将页面开发为直接的HTML / CSS / JS页面,使API调用ServiceStack并在返回401时通过弹出窗口进行身份验证,过去只有在我停止并重新启动项目以重建服务时才会这样做。在以这种形式进行开发时,我可以修改静态文件并重新加载页面并查看更改而不会中断auth会话,这可以通过重新加载页面后经过身份验证的API调用继续成功来证明。
稍后,一旦开发大部分完成,我将HTML移动到CSHTML中,控制器只提供它,添加表单身份验证,将[Authorize]添加到控制器,并将代码添加到Account控制器,以便在用户使用时登录时,它还使用ServiceStack进行身份验证,再次使用CustomAuthenticationMvc中的代码作为指南。我还添加了表单重定向劫持预防,因此我可以继续检测未经身份验证的API调用。这一切都很好,除了这个:如果我修改一个静态文件,如JS文件,并为返回CSHTML的控制器重新加载路由,有时它重新加载很好,但有时CSHTML将加载,但然后API调用将导致401s。这告诉我表单身份验证票证仍然有效,但不知何论API调用不再被验证。由于我所做的只是刷新浏览器,所以ss cookies应该仍然存在,但如果我在控制器的一行设置断点并检查ServiceStack AuthSession,则为空。
总的来说,为什么在MVC项目中更改JS文件有时会导致ServiceStack AuthSession消失,这是我能解决的问题吗?