ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:1,017.84KB ,
资源ID:12724665      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12724665.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(如何使用Silverlight加载动态库并发布到IIS7.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

如何使用Silverlight加载动态库并发布到IIS7.docx

1、如何使用Silverlight加载动态库并发布到IIS7使用Silverlight加载动态库并发布到IIS7开发环境搭建创建动态库Silverlight之加载动态库Silverlight之日志功能Silverlight之IIS的安装Silverlight之发布 开发环境搭建本程序采用Visual Studio 2010 Ultimate + Silverlight 4为开发环境,VS 2010下载地址参考192.168.75.5共享软件常用软件visual studio,安装方法不再详述,Silverlight4_Tools下载地址参考1. 安装VS20102. 安装Silverlight4_

2、Tools安装时如果遇到如下错误:请不要灰心,将Silverlight4_Tools.exe改为Silverlight4_Tools.zip,则可以发现这就是一个压缩包,文件内容如下: 首先安装VS10-KB982218-v4.exe 接着安装silverlight_sdk.msi 再安装Silverlight_Developer.exe为了验证Silverlight是否已经安装成功,打开VS2010,单击File-New-Project-Visual C#,选择Silverlight Application,如图:一路往下:打开MainPage.xaml.cs,在InitializeComp

3、onent行设置断点,按下F10,看看是否能够调试,如果有错误提示,则说明安装的Silverlight的Developer和RunTime版本不一致,请下载Silverlight Developer 和RunTime运行时库,本才程序使用的版本为4.0.605310,有需要者可联系(xfli),如果提示不能安装,则将先前安装的版本卸载后重新安装。4.0.608310下载地址为(http:/222.218.45.50:82/down/Silverlight.zip),至此,silverlight开发环境搭建完毕。 创建动态库首先,为了测试Silverlight加载动态库,我们打开VS 2010,

4、编一个动态库出来,步骤如下:File-New-Project-Visual C+-Win32 Console Application,将工程命名为load_dll,如图:单击ok,单击Next,在Application Settings选择Dll,如图:单击Finish,完成动态库的创建。为了测试,我们在load_dll.cpp文件中添加两个函数,命名为add_number,sub_number,代码如下:选择工程load_dll,右键-Add-New Item-Visual C+-Code-Module- Definition File,将其命名为load_dll,如图单击Add,添加如下代

5、码:单击Build-Build Solution,完成动态库的创建。 Silverlight之加载动态库打开VS 2010,单击File-New-Project-Visual C#-Silverlight Application,将工程命名为load_dll,如图:在弹出的对话框中单击OK完成load_dll工程的创建。打开load_dll.Web下的ClientBin目录,将先前创建的load_dll.dll文件拷贝 到ClientBin目录下,选择ClientBing,右键-Add-Exist Item选择拷贝过来的load_dll.dll,将其添加到ClientBin目录中。为了能够在工

6、程中加载动态库,右键load_dll.Web-Add-New Item,在弹出的对话框中选择Online Templates-选择Web Service,命名为WebService1.asmx,如图:单击Add,完成asmx文件的添加。在WebService1.asmx.cs文件中添加如下代码:using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Services;using System.Runtime.InteropServices;namespac

7、e load_dll.Web / / Summary description for WebService1 / WebService(Namespace = http:/tempuri.org/) WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1) System.ComponentModel.ToolboxItem(false) / To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following l

8、ine. / System.Web.Script.Services.ScriptService public class WebService1 : System.Web.Services.WebService const string DllPath = G:/learn/silverlight/load_dll/load_dll.Web/ClientBin/load_dll.dll; WebMethod public string HelloWorld() return Hello World; WebMethod public int SLAddNumber(int a, int b)

9、return add_number(a, b); WebMethod public int SLSubNumber(int a, int b) return sub_number(a, b); DllImport(DllPath, CharSet = CharSet.Ansi, EntryPoint = add_number, ExactSpelling = false) public extern int add_number(int a, int b); DllImport(DllPath, CharSet = CharSet.Ansi, EntryPoint = sub_number,

10、ExactSpelling = false) public extern int sub_number(int a, int b); 可以看出DllPath被设置为绝对路径,为什么这么设后面再说。右键load_dll.Web-Build,如果没有出现错误则表示成功了一半,这个一定要编译,否则下面的工作无法继续,选中load_dll工程,右键-Add Service Reference,如图:单击Discover,将自动列出WebService.asmx,双击MainPage.xaml,在Form上添加两个按钮,一个设为相加,一个设为相减,并分别双击,添加如下代码:using System;us

11、ing System.Collections.Generic;using System.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using load_dll.ServiceReference1;

12、namespace load_dll public partial class MainPage : UserControl public MainPage() InitializeComponent(); private void button1_Click(object sender, RoutedEventArgs e) /创建webService代理类的?对?象实例y WebService1SoapClient sclient = new WebService1SoapClient(); sclient.SLAddNumberAsync(100, 50); sclient.SLAddN

13、umberCompleted += new EventHandler(show_add); public void show_add(object sender, SLAddNumberCompletedEventArgs e) MessageBox.Show(e.Result).ToString(); private void button2_Click(object sender, RoutedEventArgs e) /创建webService代理类的?对?象实例y WebService1SoapClient sclient = new WebService1SoapClient();

14、sclient.SLSubNumberAsync(100, 50); sclient.SLSubNumberCompleted += new EventHandler(show_sub); public void show_sub(object sender, SLSubNumberCompletedEventArgs e) MessageBox.Show(e.Result).ToString(); 按下F7键,编译成功后,CTRl+F5运行即可看到如下效果: Silverlight之日志功能由于安全性的原因,silverlight不能直接进行文件操作,所以记录日志也就成了一个问题,需要借助插

15、件来完成日志记录的功能,本文使用NLog工具写日志。1. NLog的安装(http:/nlog-project.org/),下载后即可安装2. 为了验证NLog是否安装成功,关闭load_dll工程并重新打开,右键load_dll-Add-New Item-Visual C#-Nlog(如果没有出现表示安装没有成功,需要重新安装)-NLog Configureration File添加将日志保存到文件的配置文件,如图:添加成功后,打开MainPage.xaml.cs,修改代码如下:using System;using System.Collections.Generic;using Syste

16、m.Linq;using System.Net;using System.Windows;using System.Windows.Controls;using System.Windows.Documents;using System.Windows.Input;using System.Windows.Media;using System.Windows.Media.Animation;using System.Windows.Shapes;using load_dll.ServiceReference1;using NLog;namespace load_dll public parti

17、al class MainPage : UserControl private static Logger logger = LogManager.GetCurrentClassLogger(); public MainPage() InitializeComponent(); private void button1_Click(object sender, RoutedEventArgs e) /创建webService代理类的?对?象实例y WebService1SoapClient sclient = new WebService1SoapClient(); sclient.SLAdd

18、NumberAsync(100, 50); sclient.SLAddNumberCompleted += new EventHandler(show_add); public void show_add(object sender, SLAddNumberCompletedEventArgs e) MessageBox.Show(e.Result).ToString(); logger.Info(e.Result).ToString(); private void button2_Click(object sender, RoutedEventArgs e) /创建webService代理类

19、的?对?象实例y WebService1SoapClient sclient = new WebService1SoapClient(); sclient.SLSubNumberAsync(100, 50); sclient.SLSubNumberCompleted += new EventHandler(show_sub); public void show_sub(object sender, SLSubNumberCompletedEventArgs e) MessageBox.Show(e.Result).ToString(); logger.Info(e.Result).ToStri

20、ng(); 打开App.xaml.cs,添加如下代码:using NLog;using NLog.Config;using NLog.Targets;using NLog.Layouts;private void Application_Startup(object sender, StartupEventArgs e) InitializeNLog(); this.RootVisual = new MainPage(); private void InitializeNLog() SimpleConfigurator.ConfigureForTargetLogging( new FileTa

21、rget() FileName = $specialfolder:MyDocuments/logs/$shortdate.log, Layout = new CsvLayout() Columns = new CsvColumn(Time, $longdate), new CsvColumn(Level, $level), new CsvColumn(Lessage, $message), new CsvColumn(Logger, $logger), , , LogLevel.Debug); 打开load_dll的工程属性,设置为OOB模式,方法为:右键load_dll-Properties

22、至此日志功能添加完成,为了验证日志是否真正的输出了,运行工程并打开C:UsersAdministratorDocumentslogs,可以看到已经输出了日志。 Silverlight之IIS的安装为了能够运行ASP.NET服务,需要在部署机器上安装IIS服务,这里只说明如何在Windows 7上安装IIS服务,方法如下:单击开始-控制面板-程序-打开或关闭windows功能,在弹出的对话框上选择Internet信息服务-万维网服务-应用程序开发功能-ASP.NET,如图:Windows 7 系统上安装好IIS 服务后,默认就支持.asmx,和.xaml扩展名的文件,在XP系统上或者Server

23、机器上部署IIS时,还需添加对上述两种扩展名的支持,具体可用IIS 和MIME为关键字搜索即可获得方法。在浏览器输入:http:/127.0.0.1,如果出现IIS的欢迎界面,则说明IIS服务安装成功。右键我的电脑-管理-服务和应用程序-Iternet 信息服务,可以看到IIS已经为我们创建好了一个Default Web Site站点。 Silverlight之发布前面,我们已经完成了名为load_dll的Silverlight工程,现在我们要将其部署到IIS服务站点,还记得上面说过的动态库的加载路径的问题,这里我们不能写为绝对路径,需要设置为虚拟的路径,这样客户端在访问服务端时才能访问加载到

24、这个动态库,将先前的代码修改如下:using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Services;using System.Runtime.InteropServices;namespace load_dll.Web public class DllInvoke DllImport(kernel32.dll) private extern static IntPtr LoadLibrary(String path); DllImport(kern

25、el32.dll) private extern static IntPtr GetProcAddress(IntPtr lib, String funcName); DllImport(kernel32.dll) private extern static bool FreeLibrary(IntPtr lib); public Delegate Invoke(String APIName, Type t) IntPtr api = GetProcAddress(hLib, APIName); return (Delegate)Marshal.GetDelegateForFunctionPo

26、inter(api, t); private IntPtr hLib; public DllInvoke(String DLLPath) hLib = LoadLibrary(DLLPath); DllInvoke() FreeLibrary(hLib); / / Summary description for WebService1 / WebService(Namespace = http:/tempuri.org/) WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1) System.ComponentModel.Tool

27、boxItem(false) / To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. / System.Web.Script.Services.ScriptService public class WebService1 : System.Web.Services.WebService public delegate int Proc_add_number(int a, int b); public delegate int Proc_sub_

28、number(int a, int b); / const string DllPath = G:/learn/silverlight/load_dll/load_dll.Web/ClientBin/load_dll.dll; WebMethod public string HelloWorld() return Hello World; WebMethod public int SLAddNumber(int a, int b) DllInvoke invoke = new DllInvoke(Server.MapPath(/ClientBin/load_dll.dll); Proc_add

29、_number add_number = (Proc_add_number)invoke.Invoke(add_number, typeof(Proc_add_number); return add_number(a, b); WebMethod public int SLSubNumber(int a, int b) DllInvoke invoke = new DllInvoke(Server.MapPath(/ClientBin/load_dll.dll); Proc_sub_number sub_number = (Proc_sub_number)invoke.Invoke(sub_number, typeof(Proc_sub_number);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1