SilverLight 一日两次碰壁
SilverLight1.1 中,使用 SoaphttpClientProtocol 调用WS有个限制,就是Cross domain calls are not supported by BrowserHttpWebRequest,这是 SilverLight 的安全机制的一部分,证据如下:
{
if (uri == null)
{
throw new ArgumentNullException("uri");
}
if (!uri.IsAbsoluteUri)
{
uri = new Uri(HtmlPage.DocumentUri, uri);
}
else if (!enableCrossDomainCalls && IsCrossDomainRequest(uri))
{
throw new InvalidOperationException("Cross domain calls are not supported by BrowserHttpWebRequest.");
}
this._uri = uri;
this._outOfBrowser = !inBrowser || (enableCrossDomainCalls && IsCrossDomainRequest(uri));
}
internal static bool IsCrossDomainRequest(Uri uri)
{
string components = uri.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped);
string str2 = HtmlPage.DocumentUri.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped);
if (components.Equals(str2, StringComparison.OrdinalIgnoreCase))
{
return false;
}
return true;
}
但对于需要调用其他Site 的WS的需求似乎并不过份,那我们就想其他办法绕过去吧。
我们知道在JavaScript中调用WS是没有这限制的(但还是有验证的),通过JavaScript 实际是JavaScript +XMLhttpRequest +JSon+WS+ JavaScriptSerializer+Silveright的技术组合,我有点怕,但应该能实现。
HttpHandler 也许是个不错的主意,在服务端做重新定向,起码应该能解决调用自己Web site 的WS 的问题 (就是在自己WebSite上做一个HttpHandler ,用来代理WebserService 的调用)。马上试验,又发现一个限制,是HttpHandler的限制,其实也是ASP.net 的限制,就是服务端的重定向方法 Server.Execute 和Server.Transfer 方法只支持重定向到 ASP.net page。明证在 HttpServerUtility 类中
else if (!(handler is Page))
{
error = new HttpException(0x194, string.Empty);
}
文档里也有说明The page transferred to should be another .aspx page. For instance, a transfer to an .asp or .asmx page is not valid.
咣当倒地。
但改进第二种方式, HttpHandler + JavaScriptSerializer + WS应该是可行,而且效率肯定能比第一种高。本人浅薄第认为,只要能不涉及JavaScript就远离它。明天再试。
转载于:https://www.cnblogs.com/youhok/archive/2008/02/18/1072629.html
SilverLight 一日两次碰壁相关推荐
- Silverlight入门:第三部分 - 数据访问
现在我们已经有了一个基础布局,同时也在上面放了一些控件,接下来让我 们开始获取数据.因为我们想要搜索Twitter上的内容,所以我们需要充分使用 他们提供的Web服务API.在继续之前,我要先说明在本 ...
- 关于微软Silverlight,你应该知道的10件事
对于任何成长中的企业来说,设计一个合适的网站是一件非常重要的事情,但是如何让你的网站具有富互联网应用程序(Rich Internet Applications,RIA)的体验却不是那么简单.为了在这方 ...
- Flex/Silverlight的技术比较转
基于个人的使用经验,我从语言.框架.开发环境和运行环境四个方面对Flex和Silverlight这两门技术做一个比较,自己认为这个比较还是比较全面的.(这样的比较有意义吗?个人意见,只要别把自己当成宗 ...
- Silverlight 全屏模式
Silverlight 有两种模式:第一种为嵌入式,第二种为全屏模式. 全屏模式需要引用其页面宿主程序: 即 Application.Current.Host.Content.IsFullScreen ...
- Flex/Silverlight的技术比较
Flex/Silverlight的技术比较 别人博客上看见的,一文下去,引起口水大战,其实仁者见仁,智者见智,每种语言都不可能是完善的,扬长避短才是王道. 基于个人的使用经验,我从语言.框架.开发环境 ...
- WPF对决Silverlight:为项目选择最佳技术
在何时使用WPF,何时使用Silverlight的问题上,很多人备感困惑.为项目选择正确的技术取决于应用程序的需求,以及WPF和Silverlight能力的不同之处. Silverlight最初称为W ...
- [Silverlight]奇技银巧系列-5 捕获路由事件
Silverlight奇技银巧系列: 所有该系列中的文章只为介绍一些Silverlight中或隐藏在Silverlight .NET framework鲜为人知的知识和技巧.这些文章并非教程,也是不是 ...
- 微软Silverlight,你应该知道的10件事
笔者使用Silverlight的时间比较长,一直在研究这个微软号称"Flash杀手"的工具.根据几个月的第一手体验,对它的技术方面的精华进行了总结. 随着Siverlight公众版 ...
- Silverlight 异步单元测试
Silverlight 中的很多操作都是异步的,很多情况下要求单元测试也是异步的,但是介绍异步单元测试的文档很少.通过对 Silverlight Toolkit 中的 Microsoft.Silver ...
最新文章
- RHCSA 解析-01
- 动态内存检测工具Valgrind
- 点到点链路上的ospf
- Python学习笔记(二)——HelloWorld
- 使用STM32F103ZET霸道主板实现SD卡的读写(非文件系统)
- 如何让Filddler抓包时忽略某些主机名
- 辨异 —— 不同的编程语言(编译型语言、解释型语言、动态语言、静态语言)...
- MapReduce 之shuffle过程
- NVIDIA背书-Kaldi是目前最受欢迎的开源语音识别框架
- java自动扫描不好使_Spring 自动扫描 不支持jar包 component-scan
- perl语言入门学习
- 网络框架分析-全是套路
- java五险一金去从工资扣吗,五险一金需要自己交钱吗?是从工资里扣除还是......
- 阿里内核月报2014年7月-8月
- [work] Python - 字典(dict)删除元素
- 交响曲、协奏曲、奏鸣曲
- Python爬取皮皮虾视频
- Python如何快速爬取淘宝MM呢?教你一招
- 【机器学习课程】第一章机器学习概述 2.机器学习
- VIPL Lab 9篇ACM MM 2019和IEEE TIP 论文精解
热门文章
- 简单介绍Tomcat中catalina.out 和 catalina.log的区别和用途
- MySQL的共享锁和独占锁
- 如何在FreeBSD中安装Nginx,MySQL,PHP(FEMP)
- java合并两个doc文件,java实现合并2个文件中的内容到新文件中
- 易语言组合框连接mysql_用mysql填充的多动态组合框
- 7/15 我的第一篇博客-写给自己
- python中使用socket编程实现图片或者其他文件的传输
- 关于学习Python之后的一点总结(1->符号优先级->for->range())
- apache ant 安装_SAP Hybris使用recipe进行安装时,是如何执行ant命令的?
- java什么时候用list_Java快问快答:用 ArrayList 还是 LinkedList?