【发布时间】:2018-08-18 22:59:34
【问题描述】:
当我的Web API 项目如下请求http 时,我已编写自定义属性以将请求重定向到https,如下所示
public class RedirectToHttpAttribute: AuthorizeAttribute
{
public override void OnAuthorization(HttpActionContext actionContext)
{
if (actionContext.Request.RequestUri.Scheme != Uri.UriSchemeHttps)
{
var response = actionContext.Request.CreateResponse(System.Net.HttpStatusCode.Found, "");
var uri = new UriBuilder(actionContext.Request.RequestUri);
uri.Scheme = Uri.UriSchemeHttps;
uri.Port = 44326;
response.Headers.Location = uri.Uri;
actionContext.Response = response;
}
}
}
现在我想为我的所有控制器和动作设置这个属性,所以我在WebApiConfig 中添加了这个。
config.Filters.Add(new RedirectToHttpAttribute());
现在有一个控制器需要同时允许http 和https。为了使这成为可能,我必须从WebApiConfig 中删除上面的行,并添加到除问题中的一个之外的所有控制器。我可以很容易地做到这一点,因为我的控制器很少,但是如果我有很多控制器,那么解决方案是什么,因为它很可能会产生错误来装饰每个控制器?
【问题讨论】:
标签: c# asp.net-mvc asp.net-web-api