归零

知识,文化,艺术,哲学

导航

SilverLight 一日两次碰壁

 
 SilverLight1.1 中,使用 SoaphttpClientProtocol 调用WS有个限制,就是Cross domain calls are not supported by BrowserHttpWebRequest,这是  SilverLight 的安全机制的一部分,证据如下:

internal BrowserHttpWebRequest(Uri uri, bool inBrowser, bool enableCrossDomainCalls) : base(uri)
    
{
        
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(0x194string.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就远离它。明天再试。

posted on 2008-02-18 18:44  youhok  阅读(354)  评论(0编辑  收藏  举报