Asp.net web api Telerik报告REST API不接受跨源请求
我的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
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;
}
}
}
MyApp\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);
}
}
Myweb.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(源代码:,标题:,方法:*”)