表单身份validationredirectcss /脚本包括HTTP 302的login页面

我有一些包括login页面,一个CSS文件和一个JS文件。

<link rel="stylesheet" type="text/css" href="../../ext/resources/css/ext-all.css" /> <script type="text/javascript" src="../../ext/bootstrap.js"></script> 

不幸的是,浏览器为这些请求获得302响应的请求。 表单身份validation将请求视为未经授权,并将其redirect到login页面。 它并没有意识到请求来自login页面。

 GET http://localhost:50880/ext/resources/css/ext-all.css HTTP/1.1 HTTP/1.1 302 Found <html><head><title>Object moved</title></head><body> <h2>Object moved to <a href="/Account/LogOn?ReturnUrl=%2fext%2fresources%2fcss%2fext-all.css">here</a>.</h2> </body></html> 

我想也许设置包含文件夹(外部)的权限给每个人可能会帮助。

我在其他项目中没有遇到这个问题。

您需要从configuration文件中排除css文件和图像以进行身份​​validation。 使用位置标签可以排除单个文件或目录。

 <location path="<RELATIVE_PATH_OF_YOUR_RESOURCE_FILES>"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> 

我有同样的问题。 这是我如何解决它。

在IIS7中,点击你的网站,然后双击authenticationbutton。 点击匿名身份validation,然后点击右侧的编辑…链接。 确保选中“应用程序池标识”checkbox。

我的应用程序池正在“networking服务”用户(而不是“ApplicationPoolIdentity”)下运行。 您可以在IIS中的应用程序池的“高级设置”中select“身份”。 该用户已被授予完全访问该网站的文件系统的权限。

所以,我所做的就是完全解决了这个问题。

首先,我像其他人所说的那样对web.config进行了更改。

我在IIS中使用匿名身份validation,正如在这个问题所述,我进入IIS>应用程序池>右键单击我的应用程序池>编辑>更改应用程序池使用应用程序池标识。

然后 – 我去到包含我的网站的父文件夹,进入该文件夹的权限,并添加服务器的networking服务帐户来访问该文件夹。 这是为我做的。 这是因为应用程序池正在ApplicationPoolIdentity下运行,这是本地计算机上的NETWORKSERVICE帐户。

希望这可以帮助别人!

我遇到的问题是,我从互联网上下载了一个jquery插件,并将其复制到web服务器上的内容目录中,并且Windows下的所有文件都被阻塞,以至于无法由Web服务器正确访问。 解除Windows中的文件解决了这个问题。

迟到的答案在这里,但我想帮助阐明这IISsue一些灯。 (看看我做了什么?)

首先,我想说的是,David Conlisk的答案就是每一次回答这个问题。 但是,如果你像我一样,并已部署了许多应用程序与forms和匿名身份validation,其中匿名authentication身份设置为IUSR,突然间,我现在看到这个问题 ,然后听我怎么转载这个问题,希望是幸免于同样的困境。


我的标准做法是让我的Web应用程序的AppPoolIdentity作为networking服务运行。 然后我只是去虚拟目录指向的磁盘上的实际目录 – > 右键单击 – >属性 – >安全选项卡 – >编辑 – >添加networking服务用户 – >授予读/写权限。

然后,我在需要的目录上启用匿名身份validation(js,css等)。默认情况下,应用程序池标识为IUSR。

好。 现在突然在我的开发环境中,我开始得到302表单身份validationredirect所有我的CSS和JS! 发生了什么? 我在我的web应用程序上做了一个SVN切换到源代码pipe理中的一个不同的分支 。 啊。 它完全支持我的每个文件的磁盘权限。 唯一的办法,我已经能够解决它是删除整个networking应用程序,并做一个新的结帐,并重新申请networking服务读取权限(或应用权限的每一个单一的文件…是的,我已经尝试删除并重新添加父级别文件夹的权限)。

所以这一次,我决定用它,我以本地系统运行我的networking应用程序,这将显示磁盘许可的老板,这对我来说是一个短期的解决方法。 但唉,不是今天。 我向你发誓,在我看来,我正在寻找两个configuration完全相同的表单身份validationWeb应用程序的部署,302问题只能在我的开发机器上重现。 唯一的区别是我的机器上最近的SVN开关。

只要我login并获得一个表单身份validationCookie,js和css下载就好了。


忍受我,我刚刚发现了一个令人震惊的发现。 我部署的所有服务器都具有读取授予MACHINE_NAME \ Users的权限 。 而我的开发机器不。 一旦我添加到我的开发机器,我能够下载我的CSS。


TLDR;

道德的故事是你可以保持匿名authentication身份为IUSR,但是你必须授予所有用户在磁盘上的Web应用程序的读取权限。

由于这是一个坏主意(出于安全原因),我将采用David C的答案,使匿名身份validation标识作为应用程序池标识运行。