在用户重定向到我的 MVC4 项目的身份验证部分之前,我需要运行几行代码。
我正在使用:
<modules>
<add name="WSFederationAuthenticationModule" type="System.IdentityModel.Services.WSFederationAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
<add name="SessionAuthenticationModule" type="System.IdentityModel.Services.SessionAuthenticationModule, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" preCondition="managedHandler" />
</modules>
和
<authorization>
<deny users="?" />
</authorization>
这样做的原因是,如果尚未添加站点,我需要将其添加到 Azure ACS,并且我需要在将用户定向到 ACS 之前执行此操作。运行代码的最佳位置在哪里? (我需要访问它来自的 url,因为这就是需要提供给 ACS 的内容,所以我猜 global.asax 不是正确的位置。(假设它可以在没有请求传入的情况下启动)。
最佳答案
确实,即使在阅读您希望动态发现域的评论后,这也应该成为 Application_Start 事件的一部分。
您应该在某种文件中拥有所有域的有效列表 - 最有可能是 web.config。
出于性能和架构方面的原因,前往 Godaddy 购买新域名并将其指向您的网站似乎不太可能,您不能再执行 1 个步骤...将其放入配置中文件:)
(在答案中添加此内容以及基于评论...) - 您还可以添加私有(private)静态 Hashset<string>
在 Global.asax 文件内和 Application_BeginRequest 上检查当前域是否已注册,如果没有,请注册。
这将为每个请求增加大约 0.001 毫秒的时间,所以这确实很小。
关于asp.net-mvc-4 - 我应该在哪里注入(inject)用户在 MVC4 中进行身份验证之前需要运行的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16788990/