Asp.net web api Telerik报告REST API不接受跨源请求

Asp.net web api Telerik报告REST API不接受跨源请求,asp.net-web-api,telerik-reporting,Asp.net Web Api,Telerik Reporting,我的API有一个ReportsController设置,如下所示: using System.Web.Http.Cors; using Telerik.Reporting.Cache.File; using Telerik.Reporting.Services; using Telerik.Reporting.Services.WebApi; namespace API.Controllers { [EnableCors(origins: "*", headers: "*", meth

我的API有一个
ReportsController
设置,如下所示:

using System.Web.Http.Cors;
using Telerik.Reporting.Cache.File;
using Telerik.Reporting.Services;
using Telerik.Reporting.Services.WebApi;

namespace API.Controllers
{
    [EnableCors(origins: "*", headers: "*", methods: "*")]
    public class ReportsController : ReportsControllerBase
    {
        static ReportServiceConfiguration configurationInstance;

        static ReportsController()
        {
            configurationInstance = new ReportServiceConfiguration
            {
                HostAppId = "Html5App",
                Storage = new FileStorage(),
                ReportResolver = new ReportTypeResolver(),
                // ReportSharingTimeout = 0,
                // ClientSessionTimeout = 15,
            };
        }

        public ReportsController()
        {
            //Initialize the service configuration
            this.ReportServiceConfiguration = configurationInstance;
        }
    }
}
My
App\u Start\WebApiConfig.cs

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        config.EnableCors();
        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}
public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        ReportsControllerConfiguration.RegisterRoutes(GlobalConfiguration.Configuration);
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
}
我的
Global.asax.cs

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        config.EnableCors();
        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}
public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        ReportsControllerConfiguration.RegisterRoutes(GlobalConfiguration.Configuration);
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
}
My
web.config
具有建议的绑定重定向:

<dependentAssembly>
    <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.6.0" newVersion="5.2.6.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Net.Http.Formatting" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.6.0" newVersion="5.2.6.0" />
  </dependentAssembly>
它显示: “加载报表查看器的模板时出错。(模板=)。”

在页面上,并显示

加载失败http://dev-api/api/reports/resources/templates/telerikReportViewerTemplate-html: 请求的资源上不存在“Access Control Allow Origin”标头。起源'http://localhost:64634因此,不允许访问。


在Chrome控制台中。我无法找出我遗漏了什么。

您需要允许WEB API中的COR查看此文档:

  • 通过安装Microsoft ASP.NET CORs管理NuGet软件包

  • 在System.WebSe下的web.Config中添加以下代码行

  • 在system.WebServer部分的web.config中添加以下代码行


在控制器中添加[EnableCors(源代码:,标题:,方法:*”)