Silverlight控件——如何提升应用程序信任度与问题解决

从silverlight5开始,可以在项目设置中勾选“在浏览器内运行时需要提升的信任”来达到在浏览器内运行提权silverlight客户端的目的,在个特性很有用处。

可我使用这个功能时遇到了一个奇怪的故障:我使用visual studio 2010开发一个silverlight5项目,发现上面那个设置项不起作用,无论是否勾选它,代码中的 App.Current.HasElevatedPermissions总会返回false,那些需要提权运行的操作自然也都会失败。累死好几千脑细胞后 才发现故障原因。

当你勾选“在浏览器内运行时需要提升的信任”时,visual studio会做下面几件事情:

1、在silverlight的项目文件(.csproj)中增加内容:<RequireInBrowserElevation>true</RequireInBrowserElevation>

2、在项目的Properties文件夹中增加一个文件:InBrowserSettings.xml。

3、在silverlight的项目文件(.csproj)中增加内容:<InBrowserSettingsFile>Properties\InBrowserSettings.xml</InBrowserSettingsFile>

如果上面步骤都顺利完成就没什么问题。但如果项目的Properties文件夹正好有一个名为InBrowserSettings.xml的文件,就可能会有下面种故障发生:

1、这个文件只是在文件夹里,没包含在项目中,那么visual studio增加InBrowserSettings.xml会失败,但不会给你任何提示。结果是看似“在浏览器内运行时需要提升的信任”这一项已经被勾 选,但实际上并没有成功的提升silverlight运行权限,需要提权运行的代码都会失败,这个莫名其妙的故障搞的我焦头烂额。要解决这个故障,可以在 解决方案资源管理器中查看所有文件,把InBrowserSettings.xml手动包含在项目中,并使用记事本打开项目文件手动添加 上<InBrowserSettingsFile>Properties\InBrowserSettings.xml</InBrowserSettingsFile>。 如果勾选“在浏览器内运行时需要提升的信任”后发现visual studio并没在Properties文件夹中增加InBrowserSettings.xml文件,可以判断这个故障已被触发。

2、这个文件已经在这个文件夹里,而且已包含在项目中。visual studio会试图根据你的勾选来改变InBrowserSettings.xml中的内容,如果InBrowserSettings.xml文件正好处 于只读状态(比如它被签入了),那么visual studio改变文件内容时会出错,结果是visual studio干脆的崩溃退出,退出前也不会给你任何提示。所以改变“在浏览器内运行时需要提升的信任”的勾选前,如果 InBrowserSettings.xml文件已被签入或由于其它原因设了只读,请提前把它签出或去掉只读属性。

上述两个故障中,第1个故障原因非常隐蔽。我曾经奇怪,为什么这么巧,偏偏在Properties文件夹偏偏有一个名为 InBrowserSettings.xml的文件。后来经过询问同事才知道了原因,这不是一个巧合。我的同事曾经试验性的勾选“在浏览器内运行时需要提 升的信任”,visual studio在他的项目中增加了InBrowserSettings.xml,他试验完后通过撤销签出项目取消了自己的操作。他认为这样就彻底回滚了自己 的动作,但实际上不是,撤销签出只是撤销在项目中包含InBrowserSettings.xml文件,并不在项目文件夹中删除这个文件,所以他再次签入 项目时,InBrowserSettings.xml就会被签入到TFS里,另外的同事获取新版本时会就会把这个未包括在项目中的 InBrowserSettings.xml文件隐蔽的获取到Properties文件夹中,从面引发这个故障。

希望能帮到大家,别再有人踩到这个地雷。

Silverlight控件——如何提升应用程序信任度与问题解决

时间: 2024-10-31 20:09:41

Silverlight控件——如何提升应用程序信任度与问题解决的相关文章

silverlight 控件初始化和布局

https://msdn.microsoft.com/zh-cn/library/dd351483(v=vs.95).aspx 控件初始化和布局 Silverlight 当您创建控件时,务必了解初始化和布局事件和方法的顺序. 这样,您就知道用于改写的正确方法或要处理的正确事件以获得特定的效果. 通常,可以构造 Silverlight 控件并设置其属性:接着创建其可视化表示形式或可视化树:然后该控件经历整个布局过程. 下表列出了在控件创建和布局期间所设置的属性以及发生的事件和方法. 属性.方法和事

Silverlight控件样式——TabControl

写Silverlight程序已有一年有余,一步步走来满是收获却疏于积累与分享.在此空闲时间,将过去重写过的控件样式一一记录,便于查阅,也希望能起到抛砖引玉之效.如有编写和使用上的问题,均可发邮件到zdp06623#163.com(#替换为@)反馈与问询. 控件修改后效果 控件使用注意事项 该控件由系统自带控件TabControl重写而来,样式仿Chorme选项卡.使用过程中需要注意几点: 1.第一个选项卡样式与其他选项卡样式有所差异,需要分别引用FirstGreenTabItemStyle样式和

TAB控件事件在Report程序中的定义及使用

SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF } .L0S31 { font-style: italic; color: #808080 } .L0S32 { color: #3399FF } .L0S33 { color: #4DA619 } .L0S52 { color: #0000FF } .L0S55 { color: #800080 } .L0S7

silverlight控件阴影效果示例

<ScrollViewer MaxHeight="400" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden" BorderBrush="Transparent"> <ScrollViewer.Effect> <DropShadowEffect ShadowDepth="0" Col

控件运行后报索引超出范围的问题解决

错误现象: 错误信息:索引超出范围.必须为非负值并小于集合大小. 参数名: index(开发环境:VS2010,三方控件DotNetBar) 一般在程序开发过程中项目报以上的错误,一般在程序界面是没有办法捕获异常的,不过也不是这样的问题就没有办法解决,我们可以在在项目的入口文件:Program.cs中添加一下代码: Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application

【原创】有关Silverlight控件DataGrid的绑定数据后单元格单独复制的功能实现分析

前些日子,公司新需求需要对silverlight的datagrid进行局部任意单元格数据可复制,查阅了半天网络资料愣是没找到相关资料,开始还以为是silverlight的bug根部无法实现, 最后还是实现了.MSDN上也未曾记录这个事件,具体代码如下: 前段xaml文件 需要个datagrid绑定复制事件: CopyingRowClipboardContent="dataGrid_CopyingRowClipboardContent" 后台代码实现如下: void dataGrid_C

在C# WinForm程序中创建控件数组及相应的事件处理

控件数组是VB提供的一个优秀的设计解决方案,它能很方便快捷的处理大批同类控件的响应和时间处理,但不知为什么在C#中这个优秀特性没有传承下来,甚为可惜,本文将要探讨就是如何在C# WinForm程序实现它.首先请看界面 在上面的界面中,本人想实现一个42个元素的Button数组来实现一个日历的功能,上面显示出了一部分. 其中采用了网格布局来放置这些按钮.手工创建为全部按钮后,在窗体类中代码中定义成员变量控件数组: private Button[] btns;然后在构造函数中初始化: btns =

饼图数据可视展示报表控件MindFusion.Reporting for Silverlight

MindFusion.Reporting for Silverlight是一款SilverLight平台下的报表控件,帮助软件开发人员以简单且直观的方法构建复杂的报表,并且软件开发人员可以根据需求自定义报表,控件完全由C#编写并且分发完全免费. 具体功能: 支持所有.NET数据源 单个报表里可以使用多个数据源 支持绑定和非绑定两种数据模式 利用饼图进行数据可视展示 支持插入图像 报表宿主任何SilverLight控件 多页报表 支持显示报表在SilverLight Canvas 在完整功能的报表

Silverlight学习笔记(三):控件布局管理

简介: 学习Silverlight控件在页面上是如何进行布局,实现多种复杂布局 一.常见的三种布局方式 1. Silverlight学习笔记(三):控件布局管理,码迷,mamicode.com