Silverlight通过httpBinding访问IIS宿主WCF
silverlight和wcf通信是大家开发中用得相对较多的东西,我以Silverlight 通过 httpBinding 访问 IIS 宿主 WCF 来简单介绍一下。 Silverlight 通过 httpBiding方式 访问 IIS 宿主 WCF是我们在Silverlight与WCF通信中最为常见的,也是用的最多的,我们用个很简
silverlight和wcf通信是大家开发中用得相对较多的东西,我以Silverlight通过httpBinding访问IIS宿主WCF 来简单介绍一下。
Silverlight通过httpBiding方式访问IIS宿主WCF是我们在Silverlight与WCF通信中最为常见的,也是用的最多的,我们用个很简单的例子进行演示。
项目结构:
项目目结构简单说明:
程序集名称 | 需添加的引用 | 简要说明 |
LxContracts | System.Runtime.Serialization System.ServiceModel | 用于存放操作契约与数据契约 |
LxServices | LxContracts[项目] | 服务,操作契约的实现 |
WcfHost.web | LxContracts[项目] 和LxServices[项目] | 利用Svc文件发布服务的站点 |
SilverlightDemo | Silverlight程序,调用WCF服务 |
注意:建立Silverlight程序的时候,不需要承载网站,建立一个单一的Silverlight程序即可,这样做的原因是,把Silverlight和WCF服务不放到同一个站点下面,是为了演示跨域的问题。
代码实现:
类库LxContracts:(包括数据契约Student.cs和操作契约IStudent.cs)
Student.cs 代码
代码如下 | 复制代码 |
using<span> System; </span>using<span> System.Collections.Generic; </span>using<span> System.Linq; </span>using<span> System.Text; </span>using<span> System.ServiceModel; </span>using<span> System.Runtime.Serialization; </span>namespace<span> LxContracts { [DataContract] </span>public class<span> Student { </span>/// <summary> ///<span> 学生编号 </span>/// </summary> <span> [DataMember] </span>public int StuId { get; set<span>; } </span>/// <summary> ///<span> 学生姓名 </span>/// </summary> <span> [DataMember] </span>public string StuName { get; set<span>; } </span>/// <summary> ///<span> 所在班级 </span>/// </summary> <span> [DataMember] </span>public string ClassName { get; set<span>; } </span>/// <summary> ///<span> 联系电话 </span>/// </summary> <span> [DataMember] </span>public string TelPhoneNum { get; set<span>; } } }</span> Salin selepas log masuk |
代码如下 | 复制代码 |
using<span> System; </span>using<span> System.Collections.Generic; </span>using<span> System.Linq; </span>using<span> System.Text; </span>using<span> System.Runtime.Serialization; </span>using<span> System.ServiceModel; </span>namespace<span> LxContracts { [ServiceContract] </span>public interface<span> IStudent { [OperationContract] List</span><student><span> GetStudent(); } }</span></student> Salin selepas log masuk |
StudentList.cs
代码如下 | 复制代码 |
using<span> System; </span>using<span> System.Collections.Generic; </span>using<span> System.Linq; </span>using<span> System.Text; </span>using<span> LxContracts; </span>namespace<span> LxServices { </span>public class StudentList:List<student><span> { </span>public<span> StudentList() { </span>this.Add(new Student() { StuId = 1, StuName = "小明", ClassName = "计算机一班", TelPhoneNum = "123456"<span> }); </span>this.Add(new Student() { StuId = 2, StuName = "小红", ClassName = "计算机二班", TelPhoneNum = "234567"<span> }); </span>this.Add(new Student() { StuId = 2, StuName = "小兰", ClassName = "计算机三班", TelPhoneNum = "890123"<span> }); } } }</span></student> Salin selepas log masuk |
代码如下 | 复制代码 |
using<span> System; </span>using<span> System.Collections.Generic; </span>using<span> System.Linq; </span>using<span> System.Text; </span>using<span> LxContracts; </span>namespace<span> LxServices { </span>public class<span> StudentService:IStudent { </span>public List<student><span> GetStudent() { </span>//<span>实际情况应该为从数据库读取 </span>//本例手动生成一个StudentList StudentList ListStuent = new<span> StudentList(); </span>return<span> ListStuent; } } }</span></student> Salin selepas log masuk |
站点WcfHost.web,这是一个Asp.net 空web应用程序。
1、右击” WcfHost.web”—“添加”—“新建项”—“wcf服务”,命名为”StudentSrv.svc” 。如图:
在项目中删除”StudentSrv.svc.cs”文件和”IStudentSrv.cs”文件。右击”StudentSrv.svc”文件,选择”查看标记”,将代码修改为:
2、修改webconfig 文件,代码如下:
WebConfig
代码如下 | 复制代码 |
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <compilation debug="true" targetframework="4.0"></compilation> </system.web> <system.servicemodel> <behaviors> <servicebehaviors> <behavior name="LxBehavior"> <servicemetadata httpgetenabled="true"></servicemetadata> <servicedebug includeexceptiondetailinfaults="false"></servicedebug> </behavior> </servicebehaviors> </behaviors> <services> <service name="LxServices.StudentService" behaviorconfiguration="LxBehavior"> <endpoint address="" binding="basicHttpBinding" contract="LxContracts.IStudent"></endpoint> </service> </services> <!--关闭 ASP.NET 兼容性模式--> <servicehostingenvironment aspnetcompatibilityenabled="false"></servicehostingenvironment> </system.servicemodel> </configuration> Salin selepas log masuk |
3、右击”StudentSrv.svc”文件,在”浏览器中查看”,显示如下图,说明服务已经部署好了,我用的端口是 9090:
在Silverlight中进行调用:
Silverlight调用wcf很简单,直接在”SilverlightDemo”中添加”服务引用即可”,Silverlight项目中会自动生成” ServiceReferences.ClientConfig”配置文件,当然也可以利用代码的方式调用,但是我比较懒 :)。
1、为Silverlight程序添加WCF:
“右击”—“SiverlightDemo”—“添加服务引用”—“输入服务地址”(我的是http://localhost:9090/WCF/StudentSrv.svc)--点击“前往”,就会找到服务,命名为“WCF.StudentSrv”后,点击“确定”
2、在Silverlight中调用WCF:
MainPage.xaml中添加”DataGrid”控件,xaml代码如下:
MainPage.xaml 代码
代码如下 | 复制代码 |
<datagrid x:name="dgStudnet" grid.row="0" autogeneratecolumns="False"> <datagrid.columns> <datagridtextcolumn header="学生编号" width="80" binding="{Binding StuId}"></datagridtextcolumn> <datagridtextcolumn header="学生姓名" width="100" binding="{Binding StuName}"></datagridtextcolumn> <datagridtextcolumn header="所在班级" width="120" binding="{Binding ClassName}"></datagridtextcolumn> <datagridtextcolumn header="电话号码" width="100" binding="{Binding TelPhoneNum}"></datagridtextcolumn> </datagrid.columns> </datagrid> Salin selepas log masuk |
代码如下 | 复制代码 |
public partial class<span> MainPage : UserControl { ObservableCollection</span><student><span> listStudent; </span>public<span> MainPage() { InitializeComponent(); listStudent </span>= new ObservableCollection<student><span>(); </span>this.Loaded += new<span> RoutedEventHandler(MainPage_Loaded); } </span>void MainPage_Loaded(object<span> sender, RoutedEventArgs e) { StudentClient proxyClient </span>= new<span> StudentClient(); proxyClient.GetStudentAsync(); proxyClient.GetStudentCompleted </span>+= new EventHandler<getstudentcompletedeventargs><span>(proxyClient_GetStudentCompleted); } </span>void proxyClient_GetStudentCompleted(object<span> sender, GetStudentCompletedEventArgs e) { </span>if (e.Error == null<span>) { listStudent </span>=<span> e.Result; </span>this.dgStudnet.ItemsSource =<span> listStudent; } } }</span></getstudentcompletedeventargs></student></student> Salin selepas log masuk
|
将” SilverlightDemo”设置为启动项目,运行,会产生下面的异常:
这就是因为当时建立项目的时候没有把Silverlight程序和WCF服务放到同一个站点的缘故,因此需要在发布WCF的网站根目录放置一个跨域文件:clientaccesspolicy.xml
clientaccesspolicy.xml
<?xml version="1.0" encoding="utf-8"?> <access-policy> <cross-domain-access> <policy> <allow-from http-request-headers="SOAPAction"> <domain uri="*"></domain> </allow-from> <grant-to> <resource path="/" include-subpaths="true"></resource> </grant-to> </policy> </cross-domain-access> </access-policy>
再次运行,结果如下图所示:
至此,Silverlight通过httbBingding方式访问IIS宿主的WCF的演示我们就进行到这里

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Dalam iOS17, Apple mempunyai lebih kawalan ke atas perkara yang boleh dilihat oleh apl dalam foto. Teruskan membaca untuk mengetahui cara mengurus akses apl mengikut apl. Dalam iOS, pemilih foto dalam apl Apple membolehkan anda berkongsi foto tertentu dengan apl itu, manakala pustaka foto anda yang lain kekal peribadi. Apl mesti meminta akses kepada keseluruhan pustaka foto anda dan anda boleh memilih untuk memberikan akses berikut kepada apl: Akses Terhad – Apl hanya boleh melihat imej yang anda boleh pilih, yang boleh anda lakukan pada bila-bila masa dalam apl atau dengan pergi ke Tetapan > ;Privasi & Keselamatan>Foto untuk melihat imej yang dipilih. Akses penuh - Apl boleh melihat foto

JsonNode ialah model pokok JSON Jackson yang boleh membaca JSON ke dalam contoh JsonNode dan menulis JsonNode ke dalam JSON. Kita boleh menggunakan Jackson untuk membaca JSON ke dalam JsonNode dengan mencipta contoh ObjectMapper dan memanggil kaedah readValue(). Kita boleh mengakses medan, tatasusunan atau objek bersarang menggunakan kaedah get() kelas JsonNode. Kita boleh menggunakan kaedah asText() untuk mengembalikan perwakilan rentetan yang sah dan menukar nilai nod kepada Javaint menggunakan kaedah asInt() kelas JsonNode. Dalam contoh di bawah kita boleh mengakses Json

Kami boleh mengakses metadata fail audio menggunakan Mutagen dan modul eyeD3 dalam Python. Untuk metadata video kita boleh menggunakan filem dan perpustakaan OpenCV dalam Python. Metadata ialah data yang menyediakan maklumat tentang data lain, seperti data audio dan video. Metadata untuk fail audio dan video termasuk format fail, resolusi fail, saiz fail, tempoh, kadar bit, dsb. Dengan mengakses metadata ini, kami boleh mengurus media dengan lebih cekap dan menganalisis metadata untuk mendapatkan beberapa maklumat berguna. Dalam artikel ini, kita akan melihat beberapa perpustakaan atau modul yang disediakan oleh Python untuk mengakses metadata fail audio dan video. Akses metadata audio Sesetengah perpustakaan untuk mengakses metadata fail audio adalah - menggunakan mutagenesis

Bagaimana untuk menyelesaikan masalah bahawa Tomcat tidak boleh berjaya mengakses pakej perang selepas menggunakan ia memerlukan contoh kod khusus Sebagai pelayan Web Java yang digunakan secara meluas, Tomcat membenarkan pemaju untuk membungkus aplikasi Web mereka sendiri yang dibangunkan ke dalam fail perang untuk penggunaan. Walau bagaimanapun, kadangkala kita mungkin menghadapi masalah tidak berjaya mengakses pakej perang selepas menggunakannya. Ini mungkin disebabkan oleh konfigurasi yang salah atau sebab lain. Dalam artikel ini, kami akan menyediakan beberapa contoh kod konkrit yang menangani dilema ini. 1. Semak perkhidmatan Tomcat

Cara menyelesaikan masalah mengakses dan memanggil sumber luaran dalam pembangunan PHP memerlukan contoh kod khusus Dalam pembangunan PHP, kita sering menghadapi situasi di mana kita perlu mengakses dan memanggil sumber luaran, seperti antara muka API, perpustakaan pihak ketiga atau sumber pelayan lain. . Apabila berurusan dengan sumber luaran ini, kita perlu mempertimbangkan cara mengakses dan membuat panggilan dengan selamat sambil memastikan prestasi dan kebolehpercayaan. Artikel ini menerangkan beberapa penyelesaian biasa dan menyediakan contoh kod yang sepadan. 1. Gunakan perpustakaan curl untuk memanggil sumber luaran Curl ialah perpustakaan sumber terbuka yang sangat berkuasa.

Bagaimana untuk menyelesaikan masalah akses dinafikan apabila mengubah suai fail dalam win7? Apabila mengubah suai beberapa fail sistem, kami selalunya akan digesa bahawa kami tidak mempunyai kebenaran untuk melaksanakan operasi. Kami boleh mematikan kebenaran folder atau mendapatkan hak pentadbir. Bagi pengguna yang perlu mengubah suai fail tersebut, sila lihat tutorial terperinci berikut. Penyelesaian kepada masalah akses ditolak apabila mengubah suai fail dalam Windows 7: 1. Mula-mula pilih folder yang sepadan, klik alat di atas, dan pilih pilihan folder. 2. Masukkan tab Lihat. 3. Nyahtanda Gunakan Perkongsian Fail Mudah dan sahkan. 4. Kemudian klik kanan folder yang sepadan dan klik Properties. 5. Masukkan tab Keselamatan. 6. Pilih kedudukan ikon dan klik Lanjutan. 7

Berkongsi folder sememangnya ciri yang sangat berguna dalam persekitaran rangkaian rumah atau perniagaan Ia membolehkan anda berkongsi folder dengan pengguna lain dengan mudah, dengan itu memudahkan pemindahan dan perkongsian fail. Folder kongsi Win10 Home Edition tidak boleh diakses Penyelesaian: Penyelesaian 1: Semak sambungan rangkaian dan kebenaran pengguna Apabila cuba menggunakan folder kongsi Win10, pertama sekali kami perlu mengesahkan sama ada sambungan rangkaian dan kebenaran pengguna adalah normal. Jika terdapat masalah dengan sambungan rangkaian atau pengguna tidak mempunyai kebenaran untuk mengakses folder kongsi, ia mungkin mengakibatkan tidak dapat diakses. 1. Mula-mula, sila pastikan sambungan rangkaian lancar supaya komputer dan komputer tempat folder kongsi berada berada dalam LAN yang sama dan boleh berkomunikasi secara normal. 2. Kedua, semak kebenaran pengguna untuk mengesahkan bahawa pengguna semasa mempunyai kebenaran untuk berkongsi fail.

Tiada akses unik kepada peranti kamera dalam iOS. Pengesyoran spesifikasi rasmi adalah seperti berikut - Pelaksanaan ejen pengguna bagi spesifikasi ini disyorkan untuk meminta persetujuan pengguna sebelum mula menangkap kandungan melalui mikrofon atau kamera. Ini mungkin perlu untuk memenuhi keperluan peraturan, undang-undang dan amalan terbaik yang berkaitan dengan privasi data pengguna. Selain itu, adalah disyorkan bahawa pelaksanaan ejen pengguna memberikan petunjuk kepada pengguna apabila peranti input didayakan dan membolehkan pengguna menamatkan tangkapan tersebut. Begitu juga, ejen pengguna disyorkan untuk menyediakan kawalan pengguna, seperti membenarkan pengguna - memilih peranti tangkapan media yang tepat untuk digunakan jika berbilang peranti hadir - untuk perkara yang sama. Lumpuhkan tangkapan bunyi dalam mod tangkapan video.
