servicestack,Asp.net Mvc 4,servicestack" /> servicestack,Asp.net Mvc 4,servicestack" />

Asp.net mvc 4 在MVC项目中修改js文件后,ServiceStack AuthSession为空

Asp.net mvc 4 在MVC项目中修改js文件后,ServiceStack AuthSession为空,asp.net-mvc-4,servicestack,Asp.net Mvc 4,servicestack,我有一个项目使用MVC4和ServiceStack,在Azure服务中扮演web角色,托管在IIS Express中进行开发。我使用的自定义身份验证提供程序与CustomAuthenticationMvc示例项目中的类似;它使用成员身份类进行身份验证,并使用角色类填充角色。我开始将该页面开发为一个直接的HTML/CSS/JS页面,对ServiceStack进行API调用,并在其返回401时使用弹出窗口进行身份验证,以前只有在我停止并重新启动项目以重建服务时才会使用401。在以这种形式开发时,我可

我有一个项目使用MVC4和ServiceStack,在Azure服务中扮演web角色,托管在IIS Express中进行开发。我使用的自定义身份验证提供程序与CustomAuthenticationMvc示例项目中的类似;它使用成员身份类进行身份验证,并使用角色类填充角色。我开始将该页面开发为一个直接的HTML/CSS/JS页面,对ServiceStack进行API调用,并在其返回401时使用弹出窗口进行身份验证,以前只有在我停止并重新启动项目以重建服务时才会使用401。在以这种形式开发时,我可以修改静态文件并重新加载页面,并在不中断身份验证会话的情况下查看更改,这一事实证明,重新加载页面后,经过身份验证的API调用将继续成功

后来,开发基本完成后,我将HTML移动到CSHTML中,并使用一个只提供它的控制器,添加表单身份验证,向控制器添加[Authorize],并向帐户控制器添加代码,这样当用户登录时,它还可以使用ServiceStack进行身份验证,再次使用CustomAuthenticationMvc中的代码作为指导。我还添加了表单重定向劫持预防功能,以便继续检测未经验证的API调用。这一切都很好,除了:如果我修改一个静态文件,比如JS文件,并为返回CSHTML的控制器重新加载路由,有时它会重新加载,但有时CSHTML会加载,但API调用会导致401s。这告诉我表单身份验证票证仍然有效,但不知何故API调用不再被身份验证。由于我所做的只是刷新浏览器,ss cookie应该仍然存在,但是如果我在控制器的一行上设置断点并检查ServiceStack AuthSession,它将为null


所以,归根结底,为什么在MVC项目中更改JS文件有时会导致ServiceStack AuthSession消失,这是我可以修复的吗?

我怀疑您不仅仅是在更改静态JS文件。您还在Visual Studio中重建解决方案,是吗?只有在这种情况下,你才会失去会话?达林:不,我只是更改JS文件并保存它。我不是在重建项目。使用Chrome开发工具、IE开发工具、FireBug或Fiddler 2或其他工具自己检查cookies,并验证它们是否仍然存在或是否已被清除。Mike P:确认,cookies确实仍然存在,但请求未经授权。.ASPXAUTH cookie的位置从SS cookie之前更改为之后,这可能表明原始cookie已被删除,并添加了一个新的cookie。然而,当我准备再次通过这些步骤来比较cookie的实际内容时,问题停止了。对JS的更改通过简单的刷新反映在页面上。令人发狂!也许是VS或IIS Express的问题?这也发生在我身上;但是,我只在一个windows配置上遇到了这个问题:Mac上的并行虚拟机。当我在完整的Windows7Pro或WindowsServer2008上开发时,我看不到这个问题。