asp.net-web-api – 在运行时禁用ApiController
发布时间:2020-05-24 16:10:00 所属栏目:asp.Net 来源:互联网
导读:我有一个ASP.NET Web API(.NET 4)应用程序,它有几个控制器.我们将在IIS上运行多个Web API应用程序实例,但有一点不同.某些IIS实例下只能使用某些控制器.我想的是在实例启动时禁用/卸载不适用于实例的控制器. 任何人都有一些信息可以指导我正确的方向吗? 您可
|
我有一个ASP.NET Web API(.NET 4)应用程序,它有几个控制器.我们将在IIS上运行多个Web API应用程序实例,但有一点不同.某些IIS实例下只能使用某些控制器.我想的是在实例启动时禁用/卸载不适用于实例的控制器. 任何人都有一些信息可以指导我正确的方向吗? 解决方法您可以通过修饰DefaultHttpControllerActivator来放置自己的自定义IHttpControllerActivator.在内部只检查设置,只在允许时创建控制器.当您从Create方法返回null时,用户将收到404 Not Found消息. 我的示例显示正在检查应用程序设置(App.Config或Web.Config)中的值,但显然这可能是任何其他环境感知条件. public class YourCustomControllerActivator : IHttpControllerActivator
{
private readonly IHttpControllerActivator _default = new DefaultHttpControllerActivator();
public YourCustomControllerActivator()
{
}
public IHttpController Create(HttpRequestMessage request,HttpControllerDescriptor controllerDescriptor,Type controllerType)
{
if (ConfigurationManager.AppSettings["MySetting"] == "Off")
{
//Or get clever and look for attributes on the controller in controllerDescriptor.GetCustomAttributes<>();
//Or use the contoller name controllerDescriptor.ControllerName
//This example uses the type
if (controllerType == typeof (MyController) ||
controllerType == typeof (EtcController))
{
return null;
}
}
return _default.Create(request,controllerDescriptor,controllerType);
}
}
您可以像这样切换激活器: GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerActivator),new YourCustomControllerActivator()); 更新 自从我查看这个问题已经有一段时间了但是如果我今天要解决这个问题,我会稍微改变一下这个方法并使用自定义 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – ASP.NET MVC文件名下划线
- asp.net-mvc – MVC和RadioButtonList
- 我的ASP.Net代码可以从sendgrid得到确认邮件已发送吗?
- asp.net – 通过javascript从代码后面访问变量
- asp.net-mvc-3 – MVC 3 $.ajax – 响应似乎是从部分视图缓
- asp.net – LINQ to SQL Web应用程序最佳实践
- ASP.NET 4.0中最好的浏览器检测解决方案
- asp.net-mvc – 使JSON.NET和Serializable属性一起工作
- asp.net-mvc – 部分视图继承自主布局
- asp.net – 你的aspx页面中的内联代码是一个好习惯吗?
