大佬教程收集整理的这篇文章主要介绍了CRM2011与Silverlight交互的问题,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
1.webresource的路径问题:
Silverlight生成的xap文件在CRM2011里一般有两种浏览方式,一是嵌入到html页面里进行浏览,二是在form表单里嵌入浏览,如果在html中嵌入则需注意路径问题,若xap文件的名称为new_/sl/mysl.xap,而Html的文件名为new_/html/myhtml.html,则在html页面中引用Xap文件的路径应为:” ../sl/mysl.xap”.
2. 给Silverlight程序传值:
若在html页面传则增加一个” initParams”的参数:
<param name="initParams" value="id={3A9FA9E8-AFA7-E011-8F5A-000C290D0CA9},type=10013,typename=new_bj,orgname=crm2011,userlcid=2052,orglcid=2052"/>
若在form中直接引用.xap的webresource则勾上”将记录对象类型代码和…..”即可。
3.发生” 跨线程访问无效”的异常:
如果在Silverlight中异步调用结束之后,需要更改界面元素的值,则不能直接像a.content=”aaaa”;这样修改,这样会报出” 跨线程访问无效”的错误。
解决方法:
界面首次加载时取得当前的线程,然后在修改界面元素时使用该线程的回调函数来修改即可,代码如下:
public partial class MainPage : UserControl
SynchronizationContext syn;
private crm2011Context _context;
private String _serverUrl;
public MainPage(App app)
InitializeComponent();
syn = SynchronizationContext.Current;
_serverUrl = ServerUtility.GetServerUrl();
if (!String.IsNullOrEmpty(_serverUrl))
_context = new crm2011Context(new Uri(String.Format("{0}/xrmservices/2011/organizationdata.svc/",_serverUrl),UriKind.AbsolutE));
_context.IgnoreMissingProperties = true;
String id = app.Host.InitParams["id"];
DataserviceQuery<Account> query = (DataserviceQuery<Account>)_context.AccountSet.Where(a => a.AccountId.Equals(new Guid(id)));
query.beginExecute(OnAccountSearchComplete,query);
catch (Exception eX)
private void getStr(object str)
label1.Content = str.ToString();
private void OnAccountSearchComplete(IAsyncResult result)
//Get the original query BACk from the result.
DataserviceQuery<Account> query = result.AsyncState as DataserviceQuery<Account>;
ACCOUNT retrievedAccount = new DataserviceCollection<Account>(query
.EndExecute(result)).First<Account>();
syn.Post(new SendOrPostCallBACk(getStr),retrievedAccount.Name);
catch (Exception eX)
}
syn.Post(new SendOrPostCallBACk(getStr),retrievedAccount.Name);这句是关键。
4.出现”System.Security.SecurityException: 安全性错误”
此错误是由于silverlight的跨域访问的问题,解决方法:新建一个文件,名称为:” clientaccesspolicy.xml”,用记事本打开,将下面代码copy进去:
<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="*">
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
保存后将clientaccesspolicy.xml放在crm2011 web目录的根目录下面,这样silverlight即可跨域访问,就不会报错了。
AMT 邱正卫(Peter)
以上是大佬教程为你收集整理的CRM2011与Silverlight交互的问题全部内容,希望文章能够帮你解决CRM2011与Silverlight交互的问题所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。