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拷 ...
随机推荐
- Spring事务解析3-增强方法的获取
从InfrastructureAdvisorAutoProxyCreator的层次结构中可以看到,InfrastructureAdvisorAutoProxyCreator间接实现了SmartInst ...
- Python与Hack之Unix口令
1.在实验时候,先导入crypt库:必须在Unix环境下才能实现这个模块 2.代码贴一下,以后有了Unix环境试试吧: import cryptimport syssys.modules['Crypt ...
- [xsd学习]xsd基本要素
一.xsd常用数据格式 xs:string xs:decimal xs:integer xs:boolean xs:date xs:time 二.简易元素 <xs:element name=&q ...
- JS日期函数
JS的日期函数有以下几个: getFullYear(); //获取当前年 getMonth(); //获取当前月,需要加1,而且只有一位数字,如果小于10需要前面加0 getDate(); //获取当 ...
- #ASP.NET Core 1.0 Key Features
Cross platform support and flexible runtime engine(跨平台支持和灵活的运行时引擎) ASP.NET Core 1.0 offers support f ...
- CF# 334 Moodular Arithmetic
B. Moodular Arithmetic time limit per test 1 second memory limit per test 256 megabytes input standa ...
- 01_Swift2基础之Swift简介+创建
1.Swift 1> Swift初影响 Swift 是新一代的 iOS.OS X 和 watchOS 和 tvOS 的app开发编程语言. 中文名"雨燕",寓意为敏捷.灵巧而 ...
- ccc 模拟重力 正太分布
ball.js cc.Class({ extends: cc.Component, properties: { x_vel:{ default:0 }, y_vel:{ default:0 }, gr ...
- 【转】ssh登录慢,等待输入密码时间长的解决办法
http://youhuiba.net/2013/06/09/520.html 有时候在ssh远程登录到其他主机上时发现登录时间太长,要等待很久才会出现输入密码的提示,google了一下,发现主要有两 ...
- Universal JS module loader
With dependency ;(function (root, factory) { if (typeof define === 'function' && define.amd) ...