我遇到了asp.net context.RewritePath()的问题,因为我们已经迁移到Windows Server 2012 R2。 (请注意,这可能也是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>
但这些都没有帮助。
应用程序的其余部分工作正常,一旦人们通过身份验证,重写本身就能很好地工作。