我正在尝试将使用单个用户帐户的ASP.NET MVC Web应用程序部署到使用弹性负载平衡器(ELB)的AWS服务器上。我已将站点部署到AWS应用程序服务器上的IIS,并将其连接到我的AWS SQL服务器,在服务器上按预期工作(当我在Visual Studio中运行它或部署到内部服务器时也是如此)。问题出现在远程访问时,当然会经过ELB。
- 在我的web.config文件中添加规则来获取转发请求并将其重定向到HTTPS-似乎没有产生任何明显的区别 - 添加到我的FilterConfig或Login操作的各种属性 - 直接在IIS中使用URL Rewrite添加规则
显然,我的解决方法是让每个人都去登录页面并从那里开始,而不仅仅是根URL,但我真的希望解决这个问题,因为如果在这里重定向不起作用,我可以看到它在其他地方也不起作用,并潜在地引起问题。
更新要求:实际上,我对ELB没有任何控制权,因为那是由另一个团队完成的,但是我与该团队交谈后了解到,它接受HTTPS流量,然后将其作为HTTP传递给服务器。
- 如果我尝试访问https://www.example.com/,它不起作用 - 它会将我重定向到http://www.example.com/Account/Login?ReturnUrl=%2F,然后挂起,我就会收到408错误。
- 如果我尝试访问,比如说https://www.example.com/Dashboard/Index,它不起作用 - 它会将我重定向到http://www.example.com/Account/Login?ReturnUrl=%2FDashboard%2FIndex,然后挂起,我就会收到408错误。
- 如果我直接尝试访问https://www.example.com/Account/Login,它可以正常工作。然后我可以登录,并且我的网站中的所有页面都按预期工作。但是,如果我退出登录,我会被重定向到http://www.example.com/Account/Login?ReturnUrl=%2F,然后挂起,我就会收到408错误。
- 在我的web.config文件中添加规则来获取转发请求并将其重定向到HTTPS-似乎没有产生任何明显的区别 - 添加到我的FilterConfig或Login操作的各种属性 - 直接在IIS中使用URL Rewrite添加规则
显然,我的解决方法是让每个人都去登录页面并从那里开始,而不仅仅是根URL,但我真的希望解决这个问题,因为如果在这里重定向不起作用,我可以看到它在其他地方也不起作用,并潜在地引起问题。
更新要求:实际上,我对ELB没有任何控制权,因为那是由另一个团队完成的,但是我与该团队交谈后了解到,它接受HTTPS流量,然后将其作为HTTP传递给服务器。
web.config
文件中,在forms
元素中,loginUrl
的值是什么? - Matt Houserweb.config
中没有forms
元素 - 我有<authentication mode="None" />
,我相信这是来自原始的 ASP.NET MVC 模板。 - alfredbulbasaurDashboardController
要求授权,并且(b)需要重定向到哪个页面以使用户登录。 - Matt HouserExpiredPasswordAttribute
的属性,它扩展了AuthorizeAttribute
。基本上,它会检查用户是否已登录,如果是,则检查他们上次设置密码的时间,如果超过了设定的限制,则重定向到Manage/ChangePassword页面进行更改。我不知道在我的应用程序中明确说明未登录时重定向到Account/Login;我假设这是ASP.NET MVC内部的惯例。 - alfredbulbasaur