在SharePoint环境下,dll资源脚本权限问题

          最近在用Ext.NET,因为是在SharePoint环境下使用,一直被这样一个问题所困扰着:在使用Ext.NET时,页面必须使用拥有管理权限的用户刷新一次(只要刷新其中任意Ext.NET页面),其他用户才能显示界面。查看网页源代码,发现Extjs的脚本文件和CSS文件并没有注册。而Extjs的脚本文件和css文件是作为资源嵌套在Ext.NET的dll中的。由此想到,应该是用户权限问题,导致Ext.NET的ResourceManager1控件无法注册脚本。

本以为应该挺好解决的,结果设置dll的安全权限设置为Everyone不行,iis匿名访问等等也不行,配置Web.config的safecontrol等等都不行。当搜尽Google时,发现现实也是那么的无奈,国内外都不见有人支招,而且相关资料少得可怜。于是,只好放弃,Admin刷就刷吧,虽然我也是追求完美的人,但是我却不愿意浪费过多的时间。于是每次修改发布后用Administrator刷一下,每次IIS重启后也刷一下,电脑启动后也刷一下……

但是,问题总是避不开的:普通用户使用SiliverLight插件上传完毕,程序在删除临时目录后,原来Admin访问过的页面又变成空白了。测试发现,不删除临时目录就没问题。这真有点变态,暗骂SharePoint的同时,不得不继续寻求解决方案。终于发现了老外的一个提示,说是SPSecurity.RunWithElevatedPrivileges可以提高操作权限级别。抱着试一试的态度,定义了以下扩展方法来注册EXT的脚本和样式:

 public static class ExtensionMethods

    {

        /// <summary>

        /// 给EXT.NET脚本赋予特权

        /// </summary>

        /// <param name="ResManager">ResourceManager</param>

        public static void BuildAllPrivilegesForExtNET(this ResourceManager ResManager)

        {

            if (!X.IsAjaxRequest)

            {

                SPSecurity.RunWithElevatedPrivileges(

                    delegate()

                    {

                        ResManager.RenderScripts = ResourceLocationType.Embedded;

                        ResManager.BuildScripts();

                        ResManager.RenderStyles = ResourceLocationType.Embedded;

                        ResManager.BuildStyles();

                    }

                );

            }

        }

  }

然后在Ext.NET页面的Page_Load事件中,调用BuildAllPrivilegesForExtNET方法:

ResourceManager1.BuildAllPrivilegesForExtNET();

发现问题终于解决:所有普通用户能在Admin未刷新页面的情况下,访问并显示Ext界面。并且SiliverLight插件上传完毕,也不会导致之前的问题了。看来RunWithElevatedPrivileges方法确实挺好用的。

时间: 2024-10-01 19:30:32

在SharePoint环境下,dll资源脚本权限问题的相关文章

《构建高可用Linux服务器 第3版》—— 3.6 生产环境下的Shell脚本分类

3.6 生产环境下的Shell脚本分类 生产环境下的Shell脚本作用还是挺多的,这里根据3.1节所介绍的日常工作中Shell脚本的作用,将生产环境下的Shell脚本分为备份类.监控类.统计类.开发类和自动化类.前面3类从字面意义上看比较容易理解,后面的我稍微解释一下:开发类脚本是用Shell来配合PHP做一些非系统类的管理工作,比如SVN的发布程序等:而自动化类脚本则利用Shell自动来替我们做一些繁琐的工作,比如自动生成及分配密码给开发组的用户或自动安装LNMP环境等.下面我会就这些分类举一

《构建高可用Linux服务器 第3版》—— 第3章 生产环境下的Shell脚本

第3章 生产环境下的Shell脚本 虽然Shell脚本只是一个简单的解释型语言,不会受到开发人员的重视,但对于我们系统管理员来说它有着举足轻重的作用,它可以帮助我们简化日常的工作并减少工作量,成为系统管理员的瑞士军刀.我们在系统维护工作中用Shell脚本常常能比用C语言编写的程序更快地解决相同的问题.此外,Shell脚本具有很好的可移植性,有时跨越UNIX与POSIX兼容的系统,仅需略作修改,甚至不必修改即可使用Shell脚本. 在日常工作中Shell脚本能帮助我们做什么呢? 1)配合Cront

VS2010 C++环境下DLL和LIB文件目录及名称修改

DLL工程,Debug版本下输出文件由basetool.dll basetool.lib 改为basetoolD.dll basetoold.lib 需设置: 1.配置属性-常规-目标文件名 $(ProjectName) 加d 2.配置属性-连接器-常规-输出问件 由 加d 3.配置属性-连接器-高级-导入库,设置文件名$(OutDir)$ProjectName)d.lib 4.如果有导出文件,.def文件中也一定要修改导出库的名字         LIBRARY      "BaseTool&

Linux集群和自动化维2.6 生产环境下的Shell和Python脚本分类

2.6 生产环境下的Shell和Python脚本分类 生产环境下的Shell和Python脚本的作用还是挺多的,这里根据2.1节所介绍的日常工作中Shell脚本的作用,将生产环境下的Shell脚本分为备份类.监控类.统计类.运维开发类和自动化运维类.前面3类从字面意义上看比较容易理解,后面的两类需要稍微解释一下,运维开发类脚本是利用Shell或Python实现一些非系统类的管理工作,比如SVN的发布程序等:而自动化运维类脚本则是利用Shell或Python来自动替我们做一些烦琐的工作,比如自动生

mongo shell连接到mongoDB及shell提示符下执行js脚本

同mysql数据库类似,mongoDB也可通过mongo客户端连接到mongod服务器来进行绝大多数日常管理.这个命令行工具就是mongo,在mysql中则是mysql.通过mongo命令可以连接到本机,异机,以及在linux shell或者mongo shell下执行js脚本.本文即是对此展开的描述. 一.mongo客户端连接到mongoDB //mongo连接格式 $ mongo some-host:30000/myDB //连接到本机缺省端口,缺省数据库test C:\Users\Thin

【RMAN】RMAN脚本中使用替换变量--windows 下rman全备脚本

[RMAN]RMAN脚本中使用替换变量--windows 下rman全备脚本   一.1  BLOG文档结构图       一.2  前言部分   一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① windows 下rman全备脚本的写法(重点) ② 11g rman中run块中采用变量(亮点)       本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力.   一

基于资源编排在专有网络环境下快速部署高可用的Dubbox服务(ZooKeeper版)

本文将介绍在专有网络VPC(Virtual Private Cloud)下,基于资源编排服务,快速部署高可用的Dubbox服务的过程.Dubbox服务采用的注册中心是ZooKeeper集群.做这件事情的意义在于:节约部署Dubbox的时间,降低部署Dubbox过程中出错的风险. ROS阿里云资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务.用户通过模板描述多个云计算资源的依赖关系.配置等,并自动完成所有资源的创建和配置,以达到自动化部署.运维

基于资源编排在经典网络环境下快速部署高可用的Dubbox服务(Redis版)

本文将介绍在经典网络环境下,基于资源编排快速部署高可用Dubbox服务的过程.做这件事情的意义在于:提供给开发者一套高可用的Dubbox服务框架,节约开发人员部署Dubbox服务的时间,并降低了部署Dubbox过程中出错的风险. ROS阿里云资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务.用户通过模板描述多个云计算资源的依赖关系.配置等,并自动完成所有资源的创建和配置,以达到自动化部署.运维等目的.编排模板同时也是一种标准化的资源和应用交付

浏览器环境下JavaScript脚本加载与执行探析之defer与async特性_javascript技巧

defer和async特性相信是很多JavaScript开发者"熟悉而又不熟悉"的两个特性,从字面上来看,二者的功能很好理解,分别是"延迟脚本"和"异步脚本"的作用.然而,以defer为例,一些细节问题可能开发者却并不一定熟悉,比如:有了defer特性的脚本会延迟到什么时候执行:内部脚本和外部脚本是不是都能够支持defer:defer后的脚本除了会延迟执行之外,还有哪些特殊的地方等等.本文结合已有的一些文章以及MDN文档中对两个特性的阐述,对de