3

如何在ASP.NET页面中嵌入WINFORM控件四

by 刘武 22. 十月 2009 20:56

前一篇我们知道了通过调整.NET程序集的区域安全性可以控制winform控件对本地资源的使用权限,本片将介绍另外一种方法,即通过设置URL来设定winform控件的权限。

还是上一篇的例子

打开“管理工具”/ “Microsoft .NET Framework 2.0 配置”

二 展开“运行库安全策略”

 

三 右击All_Code,并选择“新建”,输入代码组名称

 

四 点击下一步,在代码组类型里选择URL,并输入URL的值

五 权限集选择FullTrust,也可以选择创建新权限集

六 单击下一步完成操作

将上一篇写好的空间发布到刚才的URL就可以访问了,而且这样只对特定的URL信任,其他的不会受到影响,也不会担心有安全问题。

笔者测试在IE6下面没有问题,但IE7以上则必须将刚才的URL添加到信任网站才能正常访问(两者均为默认的安全设置)。

部分电脑可能没有该配置程序,则只能通过命令行来设置,具体操作可以查看caspol命令及其帮助,该文件位于\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录下。

前篇:

如何在ASP.NET页面中嵌入WINFORM控件三

如何在ASP.NET页面中嵌入WINFORM控件二

如何在ASP.NET页面中嵌入WINFORM控件一

Tags: ,

技术生涯

0

如何在ASP.NET页面中嵌入WINFORM控件三

by 刘武 28. 九月 2009 20:38

前两篇文章讲述了如何在ASP.NET页面中嵌入WINFORM控件,并且通过第二篇我们了解到有些情况下,只有本地网络或将访问的网站添加到信任站点才可以正确的访问该控件。其实有时候会更复杂,我们还需要调整.NET程序集的权限,本篇就是一个具体的例子。该例子会通过WINFORM控件在本地磁盘中写入文件。

一 打开前两篇创建的项目,并添加WINFORM用户控件IoTest,代码如下:

namespace Liuw.Net.WindowsControlLibrary
{
    public partial class IoTest : UserControl
    {
        public IoTest()
        {
            InitializeComponent();
        }

        public void Write(string path)
        {
            File.WriteAllText(path, "welcome to www.liuwu.net ");
        }
    }
}

功能很简单,仅提供一个公共的Write方法,向指定的文件写入信息。

二 编译该项目,并将Liuw.Net.WindowsControlLibrary.dll拷贝到WebSite所在目录

三 添加IoTest.aspx页面,并添加以下代码


<script type="text/javascript">
    function Write()
    {
        var obj = document.getElementById('ctl');
        obj.Write("D:/Test.txt");
    }
</script>
<input type="button" value="Write" onclick="Write()" />
<object id="ctl"  classid="Liuw.Net.WindowsControlLibrary.dll#Liuw.Net.WindowsControlLibrary.IoTest"></object>
可以看出我们是在D盘写入Test.txt文件。

 四 访问该页面,我们会得到脚本错误

请求“System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”类型的权限已失败。

其实不用紧张,这说明该网站没有执行指定程序集的权限,那该如何做呢,下面就来配置相关权限。

五 打开“管理工具”/ “Microsoft .NET Framework 2.0 配置”

六 展开“运行库安全策略”,并点击右边的“调整区域安全性” 

七 选择下一步,并将 "本地Intranet "设为完全信任

 

因笔者测试的地址用的是localhost,如果你已将网站添加的信任网站,则调整信任网站为完全信任。

八 重新启动IE,就可以了。

注意:该配置工具只有装了SDK以后才会有,所以为了有更强的操作性,我们必须寻找其他设置权限的途径,以后的章节会针对该问题进行讨论。

前篇:

如何在ASP.NET页面中嵌入WINFORM控件一

如何在ASP.NET页面中嵌入WINFORM控件二

Tags: ,

技术生涯

3

如何在ASP.NET页面中嵌入WINFORM控件二

by 刘武 23. 九月 2009 20:46

上一篇介绍了在ASP.NET页面中嵌入WINFORM控件的基本方法,本篇会举个稍微复杂的例子来说明如何在页面中调用WINFORM控件的属性和方法。

一 新建项目 Liuw.Net.WindowsControlLibrary,并添加WINDOWS用户控件 MyControl1

二 给控件 MyControl1 添加属性和方法:

namespace Liuw.Net.WindowsControlLibrary
{
    public partial class MyControl1 : UserControl
    {
        public MyControl1()
        {
            InitializeComponent();
        }

        private string _userName = "";
        public string UserName
        {
            set { _userName = value; }
            get { return _userName; }
        }

        public void SayHello()
        {
            MessageBox.Show("Welcome To Liuwu.net," + _userName);
        }
    }
}

该控件包含一个UserName属性及SayHello方法,当调用方法的时候,则弹出对话框。

三 编译项目,并拷贝dll文件到网站目录

四 添加页面SayHello.aspx


<script type="text/javascript">
function SayHello()
{
    var obj = document.getElementById("ctl");
    var input = document.getElementById("inputName");
    obj.UserName = input.value;
    obj.SayHello();      
}
</script>
Name:<input type="text" id="inputName" />
<input type="button" value="SayHello" onclick="SayHello()" />
<object id="ctl" 
 classid="Liuw.Net.WindowsControlLibrary.dll#
 Liuw.Net.WindowsControlLibrary.MyControl1"
></object>

不难看出,用JS脚本就可以完成属性和方法的调用,不过此时运行页面,可能会出现脚本错误,提示 “对象不支持该属性或方法”。那是因为我们在编译用户控件时少了一个步骤:

五 右击项目Liuw.Net.WindowsControlLibrary,并选择属性,选择“应用程序”选项卡,点击"程序集信息",勾中“使程序集COM可见”,

重新编译,并替换网站目录下的文件:

现在我们就可以正常访问了,但是还有个限制,只有本地网络或将访问的网站添加到信任站点才可以。是不是很麻烦,的确,他就是这麽麻烦,甚至笔者在VS2005环境下直接浏览也会提示脚本错误,必须建立虚拟目录,或者发布后才能使用。还有个方法就是配置.NET的程序集权限,这个会在以后的章节单独讨论。

前篇:

如何在ASP.NET页面中嵌入WINFORM控件一

后篇:

如何在ASP.NET页面中嵌入WINFORM控件三  

Tags: ,

技术生涯

9

如何在ASP.NET页面中嵌入WINFORM控件一

by 刘武 21. 九月 2009 20:45

在.NET之前,我们如果想访问客户端的资源,最常见的方式就是在网页里面嵌入ACTIVEX控件。现在有了.NET,我们可以将WINFORM控件嵌入在网页里面,从而直接控制客户端,不过前提是客户端必须安装了.NET库。这有点像JAVA 的APPLET(笔者对JAVA不是很熟,如有问题欢迎指正)。由于需要.NET的运行库,所以使用起来有很多限制,不过如果是企业内部系统,.NET库可以做为客户端部署的一部分,这样可以利用.NET编程的优势,大大简化开发过程。

本文就从最简单的例子入手,讲解具体的开发过程。

一 新建windows控件库项目,姑且取名为Liuw.Net.WindowsControlLibrary

二 添加windows控件HelloWorld

三 添加按钮及事件

        这里我们只添加一个按钮,点击按钮就弹出提示框 "Welcome To Liuwu.net "

      以下是部分代码

namespace Liuw.Net.WindowsControlLibrary
{
    public partial class HelloWorld : UserControl
    {
        public HelloWorld()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Welcome to Liuwu.Net");
        }
    }
}

四 编译该项目,得到Dll文件 Liuw.Net.WindowsControlLibrary.dll

五 新建网站,将刚才的Dll文件拷贝到根目录下,并添加页面 WinformCtlTest.aspx

六 在aspx页面添加以下代码

<object id="ctl" classid="Liuw.Net.WindowsControlLibrary.dll#

Liuw.Net.WindowsControlLibrary.HelloWorld"></object>

这里有点像ActiveX控件的调用,classid的命名规则是 "dll文件名#命名空间名.类名",中间并没有换行,我这里只是为了方便显示。

七 运行该页面,就会看到刚才编写的控件了,点击按钮,则弹出提示框 "Welcome To Liuwu.net "

怎么样,是不是觉得太简单了,别急,下一篇会举个稍微复杂的例子。

后篇:

如何在ASP.NET页面中嵌入WINFORM控件二

如何在ASP.NET页面中嵌入WINFORM控件三  

Tags: ,

技术生涯

Powered by BlogEngine.NET 1.6.1.9  登录
Original Design by Laptop Geek, Adapted by onesoft