【发布时间】:2016-09-29 21:34:45
【问题描述】:
我知道这个论坛上有很多问题都在陈述相同的问题。但我想展示我的特定场景以获得与此相关的指南/建议。 我正在开发一个应该部署在 azure 上的 MVC 应用程序(基本上它使用 .net sdk 和其他包处理 Windows azure)。应用程序运行良好,但 50 -60 分钟的空闲时间(即不刷新)后,连接丢失。 在调试代码期间(通过 Visual Studio 2015 社区版),我发现它将流程重定向到 Sign in () 函数(我没有开发该函数,所以我没有通过理解)。在这里,它创建了一个登录 url(用于使用 azure AD 进行身份验证)并将应用程序重定向到该 url。这是应用程序出错的地方。在浏览器(谷歌浏览器)控制台中,我发现它声明了
MLHttpRequest 无法加载 https://login.windows.net/common/wsfed?wa=wsignin1.0&wtrealm=https%3a%2f%2fdhttps%253a%252f%252flocalhost%253a43778%252f&wct=2016-09-26T19%3a05%3a59Z。请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'https://localhost:43778' 因此不允许访问。
我尝试使用几乎所有方法在应用程序中启用 CORS,即
- 使用 web.config 条目
- 使用 nuget 包 Microsoft.AspNet.WebApi.Cors 版本 5.2.2 和 5.2.3,通过 webapiconfig.cs 和/或控制器、操作级别全局启用它。
似乎没有任何帮助,我在请求和响应中找不到与 CORS 相关的标头。 启用 CORS 可能会出现什么问题。请指导。 任何帮助将不胜感激。 谢谢
编辑: 实际上应用程序在空闲时的行为是这样的,一旦我们刷新页面就一切正常了。我只是在调查连接丢失的原因以及即使在如此长的空闲时间之后如何保持应用程序正常运行。如果 CORS 以外的任何东西都可能导致此问题,请指导并建议可能的修复方法。
【问题讨论】:
-
如果站点部署在 Azure 上,为什么会显示 'localhost:43778?您是否使用 Web 应用程序或网站 URL 更新了 Azure Active Directory 应用程序?
-
CORS 规则在接收端指定。在这种情况下
login.windows.net/。这意味着 login.windows.net 已指定不允许您的应用程序。不是反过来。这不是你可以自己改变的。 -
@Haitham 站点尚未实际部署,但我正在本地主机上调试它,是的,我已经使用此 url 更新了 Azure ADD 应用程序
-
对不起,我的错,你能告诉我们你如何重定向到 AAD 登录页面吗?
-
嗯,它是一个登录函数,重定向到登录 url 以返回“return new RedirectResult(signInRequest.RequestUrl.ToString());”
标签: asp.net-mvc azure cors azure-active-directory