彩票走势图

DevExpress DXTREME使用教程:HTML5/JS应用程序如何配置ODataService

原创|使用教程|编辑:郝浩|2013-04-07 13:53:23.000|阅读 868 次

概述:在DXTREME中我们提供了一个类库用于帮助用户从OData服务中检索数据,执行CRUD操作: ODataContext 。作为一款移动浏览器的应用程序,一般是托管在不同的OData服务域中, ODataContext必须适用于OData服务,这个OData也必须满足一些需求。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:


    在DXTREME ENTERPRISE中我们提供了一个类库用于帮助用户从OData服务中检索数据,执行CRUD操作: ODataContext 。

    作为一款移动浏览器的应用程序,一般是托管在不同的OData服务域中, ODataContext必须适用于OData服务,这个OData也必须满足一些需求,具体的如下:

   1、OData服务必须支持的JSONP的数据格式。

   2、OData服务必须支持跨域POST,MERGE和DELETE操作。

启用JSONP

    要启用JSONP支持,需要使用JSONP中提供的解决方案,以及支持ADO.NET 数据服务条的url控制格式。

    需要做的就是在“Download”中下载可用集,以及添加一个引用到OData服务对象的集上。然后简单的应用JSONPSupportBehaviorAttribute属性与服务类。

    想要让这个JSONPSupportBehavior模块为WCF Data Services 5.0工作,需要稍微修改其源代码,你需要做的就是改变JSONPSupportInspector.AfterReceiveRequest method. Replace这一行。

httpmsg.Headers["Accept"] = "application/json, text/plain;q=0.5"
httpmsg.Headers["Accept"] = "application/json, text/plain;q=0.5,application/json;odata=verbose";

启用跨域的操作支持

   为了让客户端发送跨域请求,处理HttpApplication.BeginRequest事件。这个事件处理中,检查检是否在HttpRequest的headers上包含一个Origin header。如果指定的起源,添加Access-Control-Allow-Origin 和 Access-Control-Allow-Credentials headers到响应上,此外复制Access-Control-Request-Method和Access-Control-Request-Headers请求的Headers值到Access-Control-Allow-Methods 以及Access-Control-Allow-Headers的响应headers中,如果HttpMethod是“OPTIONS”,设置HttpResponce。 StatusCode值设置为204。

   具体实现的步骤如下:

   1、如果没有补充的话,添加Global.asax文件到Odata服务项目。

   2、将以下的方法添加到Global.asax文件中。

/// <summary>
/// Enables cross domain POST, MERGE, DELETE for Firefox and Chrome
/// This requires:
/// <system.ServiceModel>
///     <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
/// </summary>
static void EnableCrossDomain() {
string origin = HttpContext.Current.Request.Headers["Origin"];
if (string.IsNullOrEmpty(origin)) return;
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", origin);
string method = HttpContext.Current.Request.Headers["Access-Control-Request-Method"];
if (!string.IsNullOrEmpty(method))
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", method);
string headers = HttpContext.Current.Request.Headers["Access-Control-Request-Headers"];
 if (!string.IsNullOrEmpty(headers))
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", headers);
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Credentials", "true");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS") {
HttpContext.Current.Response.StatusCode = 204;
HttpContext.Current.Response.End();
}
}
[VB.NET]Open in popup window
''' <summary>
''' Enables cross domain POST, MERGE, DELETE for Firefox and Chrome
''' This requires:
''' <system.ServiceModel>
'''     <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
''' </summary>
Shared Sub EnableCrossDomain()
Dim origin As String = HttpContext.Current.Request.Headers("Origin")
If String.IsNullOrEmpty(origin) Then
Return
End If
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", origin)
Dim method As String = HttpContext.Current.Request.Headers("Access-Control-Request-Method")
If (Not String.IsNullOrEmpty(method)) Then
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", method)
End If
Dim headers As String = HttpContext.Current.Request.Headers("Access-Control-Request-Headers")
 If (Not String.IsNullOrEmpty(headers)) Then
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", headers)
End If
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Credentials", "true")
If HttpContext.Current.Request.HttpMethod = "OPTIONS" Then
HttpContext.Current.Response.StatusCode = 204
HttpContext.Current.Response.End()
End If
End Sub

   在Application_BeginRequest事件处理程序上执行这个方法:

protected void Application_BeginRequest(object sender, EventArgs e) {
    EnableCrossDomain();
}
[VB.NET]Open in popup window
Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
    EnableCrossDomain()
End Sub

   最后,打开网页,配置文件,以及添加代码到<configuration>部分中:

<system.serviceModel>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>

慧都学院2017全新DevExpress线下研修班火热报名中!



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn

文章转载自:慧都控件

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP