首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用IIS7.5热身模块与ASP.NET MVC AuthorizeAttribute

使用IIS7.5热身模块与ASP.NET MVC AuthorizeAttribute
EN

Stack Overflow用户
提问于 2011-02-21 20:32:42
回答 1查看 1.1K关注 0票数 4

我在我的ASP.NET MVC应用程序中创建了一个控制器来处理应用程序的预热/初始化(即初始加载web服务、客户端代理和其他最初可能占用大量时间的操作)。为了调用WarmUp控制器,每当应用程序池启动时,我都使用IIS7/7.5预热模块发送请求。

我不希望所有的用户都能够执行WarmUp控制器操作,所以我用一个[Authorize]属性来修饰控制器。我甚至在我的域中创建了一个组,其中包含应该被允许执行热身操作的用户,并添加了这个组作为授权属性(即[Authorize(Roles = @"MyDomain\AppWarmUp")])的角色。

如果我使用web浏览器手动调用WarmUp控制器并提供适当的凭据,那么一切都会如愿以偿。但是,在使用IIS预热模块时,即使我提供了正确的凭据,我也会在应用程序事件日志中看到警告,指定身份验证失败。

如果我只为预热模块的用户上下文指定了一个类型和用户名,我将得到一个带有消息的ProviderException

只有当用户名参数与当前Windows标识中的用户名匹配时,才支持

方法。

如果我同时指定用户名和密码/令牌,我将得到一个ArgumentException,其中包含以下消息:

用于模拟的

无效令牌-它不能复制。

如果我从控制器中删除了[Authorize]属性,那么热身模块的请求就会顺利通过,而不会有任何例外。但是,如果可能的话,我想避免所有用户都可以访问WarmUp控制器的情况。这是热身模块中的错误还是我漏掉了什么?

同样值得注意的是,我也尝试过ASP.NET 4.0应用程序自动启动功能,但它似乎没有向应用程序发出实际请求的效果。有没有其他可供考虑的选择?

EN

Stack Overflow用户

发布于 2012-05-30 17:25:20

此问题可能是由于用户帐户用于在IIS中的站点中执行WarmUp请求造成的。请确保更改了应用程序池高级设置下的标识设置以及IIS中网站高级设置下的物理路径凭据。我记不起其中哪一个会起作用,所以试着要么/要么两者兼而有之。

当您从浏览器手动发出请求时,您是在模拟帐户。当IIS通过WarmUp模块发出请求时,它使用的是上面指定的一个帐户。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5070950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档