1

由于我们已移至 Windows Server 2012 R2,因此我遇到了 asp.net context.RewritePath() 的问题。(请注意,这也可能是 Windows 2012 中的一个问题)。

在 Application_BeginRequest() 中,我们将 URL /custom 重写为特定客户的文件夹结构,例如 /customer/1/images

为了做到这一点,我们必须让 .Net 为我们处理静态文件。我们在 web.config 中启用了以下内容:

我们还使用表单身份验证进行身份验证。这在控制器上使用了 MVC 过滤器。

<authentication mode="Forms">
  <forms loginUrl="~/Authentication/LogOn" />
</authentication>

这在 Windows 2008 R2 中完美运行,当没有人登录时,存储在路径 /custom/images/logo.png 中的图像显示完美。

但是在 Windows 2012 R2 中,除非用户已通过身份验证,否则我们无法显示任何图像。它总是提示登录页面。如果我直接转到路径 /customer/1/images.logo.png 它将返回图像正常而无需经过身份验证。

有一些变化导致现在总是需要身份验证。

我已经尝试了 web.config 中的所有各种设置,例如:

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

但这些都没有帮助。

应用程序的整个其余部分都可以正常工作,并且一旦人们通过身份验证,重写本身就可以很好地工作。

4

0 回答 0