asp.net – 有没有办法动态更新Web API CORS中允许的来源列表
发布时间:2020-05-24 10:53:29 所属栏目:asp.Net 来源:互联网
导读:我正在尝试为我的.Net Web API应用程序中的某些域启用CORS,并且能够通过此代码在Application Start上执行此操作. public static void Register(HttpConfiguration config){ //below comma separated string is built from database var domains
|
我正在尝试为我的.Net Web API应用程序中的某些域启用CORS,并且能够通过此代码在Application Start上执行此操作. public static void Register(HttpConfiguration config)
{
//below comma separated string is built from database
var domains = "http://www.myfirstdomain.com,http://www.myseconddomain.co.uk .... about 130 domains more..";
config.EnableCors(new EnableCorsAttribute(domains,"*","*"));
但是,如果在应用程序处于活动状态时添加了新域,则在回收应用程序池并再次构建此列表之前,将不允许这些域发布. 有没有什么办法可以在我的应用程序生命周期内更新此列表?我知道我可以定期回收应用程序池,但这会导致某些请求出现延迟,理想情况下这些请求可能没有. 我知道我可以在控制器方法上启用它,即.. [EnableCors("http://domain1.com,http://domain2.com","*")]
public HttpResponseMessage PostAsync([FromBody] MyRequest myRequest)
{
但是,逗号分隔参数必须再次声明为常量,因此不能是动态的. 我是否遗漏了一些明显的或者是否有人想到这样做的好方法? 编辑 这是我尝试编写自己的自定义EnableCors属性. [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class,AllowMultiple = false)]
public class EnableCorsByDomainAttribute : Attribute,ICorsPolicyProvider
{
private readonly CorsPolicy _policy;
public EnableCorsByDomainAttribute()
{
_policy = new CorsPolicy
{
AllowAnyMethod = true,AllowAnyHeader = true
};
var originsString = "http://www.test1.com,http://www.test2.com";
if (!String.IsNullOrEmpty(originsString))
{
foreach (var origin in originsString.Split(','))
{
_policy.Origins.Add(origin);
}
}
}
public Task<CorsPolicy> GetCorsPolicyAsync(HttpRequestMessage request,CancellationToken cancellationToken)
{
return Task.FromResult(_policy);
}
}
然后我用控制器方法装饰了 [EnableCorsByDomain] 解决方法是的,Web API CORS为这种场景提供了可扩展性点.您可以在以下Web API功能规范文档中查看名为“实现自定义ICorsPolicyProvider”的部分以获取更多详细信息.http://aspnetwebstack.codeplex.com/wikipage?title=CORS%20support%20for%20ASP.NET%20Web%20API&referringTitle=Specs (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 如何在Html.RenderAction(MVC3)中发送模型对
- asp.net-mvc – AppDomain.GetAssemblies和BuildManager.Ge
- asp.net-mvc-3 – ASP.NET MVC 3将无法识别.cshtml视图文件
- Asp.net复选框和html数据属性
- asp.net-mvc – Razor中()(括号)和{}(大括号)之间的差异
- ASP.NET Webforms中的异常处理
- ValidateInput属性似乎无法在ASP.NET MVC中工作
- MVC学习二:基础语法
- 在MVC中使用Json.Net序列化和反序列化Json对象
- Asp.net Images随机提供401个未经授权的错误
推荐文章
站长推荐
- asp.net – Reference.svcmap:无法加载文件或程
- asp.net – 小数点后尾数为零
- asp.net-mvc – ASP.NET MVC中的Flat和Nested Vi
- asp.net-core – 如何在aspnet核心应用程序中为静
- asp.net-mvc – DotNetNuke中的ASP.NET MVC?
- asp.net-mvc – ASP.NET MVC:使浏览器缓存图像从
- asp.net – Visual Studio 2010和Visual Studio
- asp.net-mvc – warns – html.helpers在项目更新
- asp.net – 如何在asp标签中将文本与中心对齐
- asp.net – 如何为客户端和服务器缓存设置不同的
热点阅读
