在用户在MVC4中进行身份验证之前,我应该在哪里注入需要运行的代码

时间:2013-05-28 09:51:28

标签: asp.net-mvc-4 azure

在用户被重定向到我的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之前执行此操作。哪里是运行代码的最佳位置? (我需要访问它的来源,因为这需要给ACS什么,所以global.asax不是我想的正确的地方。(假设它可以在没有请求的情况下启动)。

1 个答案:

答案 0 :(得分:0)

实际上,即使在阅读了您希望动态发现域名的评论之后,这也应该成为Application_Start事件的一部分。

您应该拥有某种文件中所有域的有效列表 - 很可能是web.config。

出于性能和体系结构的原因,去Godaddy并购买一个新域并将其指向您的网站似乎不太可能让您再做一步......将其放入配置中档案:))

(根据评论在答案中添加此内容...) - 您还可以在Global.asax文件中添加私有静态Hashset<string>,并在Application_BeginRequest上检查当前域是否已经注册,如果没有,请注册。

这将为每个请求增加约0.001毫秒的时间,因此确实很少。