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控件——如何提升应用程序信任度与问题解决的更多相关文章
- 解决WebBrowser控件会导致应用程序占用内存居高不下问题
WebBrowser 是一个 .NET 控件类,在 .NET Framework 2.0 版中新增.WebBrowser 类使用户可以在窗体中导航网页,下面我们来看在开发中碰到WebBrowser控件 ...
- (转)Silverlight控件关系理解
原文地址http://www.cnblogs.com/Joetao/articles/1899664.html 本篇学习了Silverlight中的控件继承关系,了解控件的继承关系对应我们操作控件,使 ...
- Qt 界面使用自己定义控件 "提升为"
1.效果图 我做了一个很easy的样例,一个能够显示颜色的QLabel,边上有个button,点击,跳出颜色选取的Dialog,然后选择一个颜色.这个QLabel会变成什么颜色. 2.ColorLab ...
- silverlight 控件样式动态绑定
<telerik:RadDiagram x:Name="diagram1" GraphSource="{Binding GraphSource, Mode=TwoW ...
- 使用第三方控件DotNetBar来美化程序
VS的控件确实有点丑陋,需要美化一下.我最先接触的就是DotNetBar,一直用它,一般都还稳定.下面简单地讲解一下使用方法 1. 下载破解版DotNetBar 10版本:http://www.cr1 ...
- .NET混合开发解决方案15 WebView2控件集成到WinForm程序编译后的文件及结构说明
系列目录 [已更新最新开发文章,点击查看详细] WebView2控件应用详解系列博客 .NET桌面程序集成Web网页开发的十种解决方案 .NET混合开发解决方案1 WebView2简介 .NE ...
- silverlight控件阴影效果示例
<ScrollViewer MaxHeight="400" VerticalScrollBarVisibility="Auto" HorizontalSc ...
- silverlight 控件自定义样式 实现方法
1:在app.xaml中加入需实现的样式,如: <Application.Resources> <Style x:Key="NodeStyle" TargetTy ...
- Qt项目ui文件中新添加的控件在代码中不识别的问题解决
今天在学Qt框架的信号槽,然后发现在ui中加的控件,通过ui-> 找不到,没有识别,于是上网查找了一下问题 解决方法 添加ui控件后,执行程序,退出程序,将debug目录下的ui_XXXX.h拷 ...
随机推荐
- Java和数据库时间格式化格式
JAVA: yyyy-MM-dd HH-mm-ss(大小HH表示24小时制); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd&q ...
- PhpMyAdmin管理,登录多台远程MySQL服务器
法一: 可直接在config.inc.php里添加数据库连接信息即可 先$i++, 然后复制原来的配置信息后修改 不过这种方式需要将连接信息写在配置文件中,有点麻烦. 这种后面省事,不用填信息,选择一 ...
- AOP动态代理解析4-代理的创建
做完了增强器的获取后就可以进行代理的创建了 AnnotationAwareAspectJAutoProxyCreator->postProcessAfterInitialization-> ...
- iOS10 UI教程视图的几何形状
iOS10 UI教程视图的几何形状 视图属性中的一部分属性可以让定义的视图绘制在屏幕上.在讲解这些属性前,我们首先将讲解,定义视图的几何形状所涉及到的结构类型.这些结构类型如下: CGPoint:它表 ...
- iOS学习33之可视化编程-StoryBoard
1. storyBoard与xib 1> 概述 iOS下可视化编程分为两种方式: xib 和 storyboard 在使用 xib 和 storyboard 创建 GUI 过程中,以 XML 文 ...
- 完数[HDU1406]
完数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- ssh An internal error occured during "Add Deployment"
这个问题一般是由于导入别人做的项目,但是项目所用的jdk跟当前所用的jdk不一样. 以前遇到过这个问题没有解决,今天解决了. 右键项目名→Properties→Java Build Path→Libr ...
- spring mvc流转控制说明
springMVC数据如何从后台再次传回前台,答案就是这里要说的Model,关于Model在写例子之前我特别先说明三点: 1.Model本身是一个接口,其实现类为ExtendedModelMap,除了 ...
- HTTP请求头详解
http://blog.csdn.net/kfanning/article/details/6062118 HTTP由两部分组成:请求和响应.当你在Web浏览器中输入一个URL时,浏览 器将根据你的要 ...
- js正则表达式实例(汇总)
来源:如何用JAVASCRIPT 正则表达式取出字符串最后一组数字,谢谢 如 30CAC0040 取出40 3SFASDF92 取出92 正则如下://d+$/g 统一空格个数 来源:正 ...