Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 我如何(简单地)在我的Azure webrole API上启用CORS_Asp.net_Azure_Cors_Azure Web Roles - Fatal编程技术网

Asp.net 我如何(简单地)在我的Azure webrole API上启用CORS

Asp.net 我如何(简单地)在我的Azure webrole API上启用CORS,asp.net,azure,cors,azure-web-roles,Asp.net,Azure,Cors,Azure Web Roles,我有一个运行API服务的Azure webrole。我正在尝试启用CORS,以便浏览器脚本可以使用API。有相当多的问题涉及在web api应用程序上启用CORS,但我还没有找到一个能为webroles提供答案的问题 我尝试将magiccustomheaders块from添加到我的web.config中,但没有成功 来自Microsoft意味着可以使用Microsoft.AspNet.Corsnuget软件包,但我不清楚如何从webroleOnStart方法中获得HttpConfiguratio

我有一个运行API服务的Azure webrole。我正在尝试启用CORS,以便浏览器脚本可以使用API。有相当多的问题涉及在web api应用程序上启用CORS,但我还没有找到一个能为webroles提供答案的问题

我尝试将magiccustomheaders块from添加到我的web.config中,但没有成功

来自Microsoft意味着可以使用Microsoft.AspNet.Corsnuget软件包,但我不清楚如何从webroleOnStart方法中获得HttpConfiguration。我不得不装饰我的每一个API方法,这似乎也很奇怪。难道没有一个“开关”可以让我为整个服务启用CORS吗

相关问题

  • 验证CORS是否实际启用的最简单方法是什么?目前,我正在使用Blazor PostJsonAsync调用并依靠它来传递,但重复地重新配置角色并将其上载到Azure以尝试更改变得相当乏味

  • 更大的问题…我是在用网络角色对抗潮流吗?大部分文档都涉及web api和web应用程序。也许这些都是未来,webroles被弃用了


我还建议转到webapps。但是,如果您使用OWIN,您也可以让它与web角色一起使用,并且您在那里应用cors的方式也适用于web应用程序

您可以将API托管在web角色中,如下所示:

这将为您提供所需的
HttpConfiguration
Startup.cs

我不得不装饰我的每一个API方法,这似乎也很奇怪。难道没有一个“开关”可以让我为整个服务启用CORS吗

您可以使用ICorsPolicyProvider在任何地方启用它:

// in startup.cs
config.EnableCors(new AllowAllCorsPolicyProvider());

public class AllowAllCorsPolicyProvider : ICorsPolicyProvider
{
    readonly CorsPolicy _CorsPolicy;

    public AllowAllCorsPolicyProvider()
    {
        _CorsPolicy = new CorsPolicy {AllowAnyHeader = true, AllowAnyMethod = true, AllowAnyOrigin = true};
    }

    public Task<CorsPolicy> GetCorsPolicyAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        return Task.FromResult(_CorsPolicy);
    }
//在startup.cs中
config.EnableCors(新的AllowlCorspolicProvider());
公共类AllowlCorsPolicyProvider:ICorsPolicyProvider
{
只读公司政策(readonly CorsPolicy);;
公共AllowlCorspolicProvider()
{
_CorsPolicy=newcorspolicy{AllowAnyHeader=true,AllowAnyMethod=true,AllowAnyOrigin=true};
}
公共任务GetCorsPolicyAsync(HttpRequestMessage请求,CancellationToken CancellationToken)
{
返回任务.FromResult(_CorsPolicy);
}

也许这些是未来的趋势,而webroles已被弃用?
您可以说web角色已被弃用,一般来说,如果可能的话,首选切换到WebApps。如果您正在构建新的应用程序,那么您应该尽可能多地使用WebApps,除非您需要完全访问web应用程序底层虚拟机(比如安装一些定制软件等)。然后你应该考虑使用Web角色(或者可以查看服务结构)。。谢谢Gaurav。这非常有帮助。在我的例子中,webrole实际上只是一个普通库的API包装器,因此转移到webapp可能是阻力最小的途径。谢谢Alex-我已经将此标记为答案,因为它似乎包含所需的信息,尽管从我12月1日起,未来的读者应该谨慎对待它我想沿着webapp路线走下去,放弃webapp角色。为Azure web app启用CORS非常简单-在Azure门户中,查找“CORS”部分(在“API”下)并在“允许的来源”列表中添加“*”(不带引号)。我同意应尽可能使用webapps。顺便说一句,您没有将其标记为答案(upvote),但这没关系;-)啊-被用户界面弄糊涂了!