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> 로그인 후 복사 |
代码如下 | 复制代码 |
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> 로그인 후 복사 |
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> 로그인 후 복사 |
代码如下 | 复制代码 |
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> 로그인 후 복사 |
站点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> 로그인 후 복사 |
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> 로그인 후 복사 |
代码如下 | 复制代码 |
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> 로그인 후 복사
|
将” 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的演示我们就进行到这里

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











iOS17에서 Apple은 앱이 사진에서 볼 수 있는 내용을 더 강력하게 제어할 수 있습니다. 앱별로 앱 액세스를 관리하는 방법을 알아보려면 계속 읽어보세요. iOS에서는 Apple의 앱 내 사진 선택기를 사용하여 특정 사진을 앱과 공유하고 나머지 사진 라이브러리는 비공개로 유지할 수 있습니다. 앱은 전체 사진 라이브러리에 대한 액세스를 요청해야 하며 선택적으로 앱에 다음 액세스 권한을 부여할 수 있습니다. 제한된 액세스 – 앱은 선택할 수 있는 이미지만 볼 수 있으며, 이는 앱에서 언제든지 또는 설정 > 개인 정보 보호 및 보안>사진을 클릭하면 선택한 이미지를 볼 수 있습니다. 전체 액세스 - 앱에서 사진을 볼 수 있음

JsonNode는 JSON을 JsonNode 인스턴스로 읽고 JsonNode를 JSON으로 쓸 수 있는 Jackson의 JSON 트리 모델입니다. Jackson을 사용하면 ObjectMapper 인스턴스를 생성하고 readValue() 메서드를 호출하여 JSON을 JsonNode로 읽을 수 있습니다. JsonNode 클래스의 get() 메서드를 사용하여 필드, 배열 또는 중첩 개체에 액세스할 수 있습니다. asText() 메서드를 사용하여 유효한 문자열 표현을 반환하고 JsonNode 클래스의 asInt() 메서드를 사용하여 노드의 값을 Javaint로 변환할 수 있습니다. 아래 예에서는 Json에 액세스할 수 있습니다.

Python의 Mutagen 및 eyeD3 모듈을 사용하여 오디오 파일의 메타데이터에 액세스할 수 있습니다. 비디오 메타데이터의 경우 Python에서 영화와 OpenCV 라이브러리를 사용할 수 있습니다. 메타데이터는 오디오, 비디오 데이터 등 다른 데이터에 대한 정보를 제공하는 데이터입니다. 오디오 및 비디오 파일의 메타데이터에는 파일 형식, 파일 해상도, 파일 크기, 지속 시간, 비트 전송률 등이 포함됩니다. 이 메타데이터에 액세스함으로써 미디어를 보다 효율적으로 관리하고 메타데이터를 분석하여 유용한 정보를 얻을 수 있습니다. 이 기사에서는 오디오 및 비디오 파일의 메타데이터에 액세스하기 위해 Python에서 제공하는 일부 라이브러리 또는 모듈을 살펴보겠습니다. 오디오 메타데이터에 액세스 오디오 파일 메타데이터에 액세스하기 위한 일부 라이브러리는 다음과 같습니다.

Tomcat이 배포 후 war 패키지에 성공적으로 액세스할 수 없는 문제를 해결하려면 특정 코드 예제가 필요합니다. 널리 사용되는 Java 웹 서버인 Tomcat을 사용하면 개발자가 자신이 개발한 웹 애플리케이션을 배포용 war 파일로 패키징할 수 있습니다. 그러나 때로는 잘못된 구성이나 다른 이유로 인해 war 패키지에 성공적으로 액세스할 수 없는 문제가 발생할 수 있습니다. 이 기사에서는 이 딜레마를 해결하는 몇 가지 구체적인 코드 예제를 제공합니다. 1. Tomcat 서비스 확인

PHP 개발에서 외부 리소스에 액세스하고 호출하는 문제를 해결하려면 특정 코드 예제가 필요합니다. PHP 개발에서는 API 인터페이스, 타사 라이브러리 또는 기타 서버 리소스와 같은 외부 리소스에 액세스하고 호출해야 하는 상황에 자주 직면합니다. . 이러한 외부 리소스를 처리할 때 성능과 안정성을 보장하면서 안전하게 액세스하고 호출하는 방법을 고려해야 합니다. 이 문서에서는 몇 가지 일반적인 솔루션을 설명하고 해당 코드 예제를 제공합니다. 1. 컬 라이브러리를 사용하여 외부 리소스를 호출합니다. 컬은 매우 강력한 오픈 소스 라이브러리입니다.

Win7에서 파일을 수정할 때 액세스 거부 문제를 해결하는 방법은 무엇입니까? 일부 시스템 파일을 수정할 때 작업을 수행할 권한이 없다는 메시지가 자주 표시됩니다. 폴더 권한을 끄거나 관리자 권한을 얻을 수 있습니다. 이러한 파일을 수정해야 하는 사용자는 다음의 자세한 튜토리얼을 살펴보시기 바랍니다. win7에서 파일을 수정할 때 액세스가 거부되는 문제에 대한 해결 방법: 1. 먼저 해당 폴더를 선택하고 위의 도구를 클릭한 다음 폴더 옵션을 선택합니다. 2. 보기 탭으로 들어갑니다. 3. 단순 파일 공유 사용을 선택 취소하고 확인합니다. 4. 그런 다음 해당 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭합니다. 5. 보안 탭으로 들어갑니다. 6. 아이콘 위치를 선택하고 고급을 클릭합니다. 7

폴더 공유는 실제로 가정이나 회사 네트워크 환경에서 매우 유용한 기능입니다. 이를 통해 다른 사용자와 폴더를 쉽게 공유할 수 있으므로 파일 전송 및 공유가 쉬워집니다. Win10 Home Edition 공유 폴더에 접근할 수 없습니다. 해결 방법: 해결 방법 1: 네트워크 연결 및 사용자 권한 확인 Win10 공유 폴더를 사용하려면 먼저 네트워크 연결 및 사용자 권한이 정상적인지 확인해야 합니다. 네트워크 연결에 문제가 있거나 사용자에게 공유 폴더에 대한 접근 권한이 없는 경우 접근이 불가능할 수 있습니다. 1. 먼저, 컴퓨터와 공유 폴더가 위치한 컴퓨터가 동일한 LAN에 있고 정상적으로 통신할 수 있도록 네트워크 연결이 원활한지 확인하십시오. 2. 두 번째로 사용자 권한을 확인하여 현재 사용자에게 파일 공유 권한이 있는지 확인하세요.

iOS에서는 카메라 장치에 대한 고유한 액세스 권한이 없습니다. 공식 사양 권장 사항은 다음과 같습니다. - 이 사양의 사용자 에이전트 구현은 마이크나 카메라를 통해 콘텐츠 캡처를 시작하기 전에 사용자 동의를 구하는 것이 좋습니다. 이는 사용자 데이터 개인 정보 보호와 관련된 규제, 법률 및 모범 사례 요구 사항을 충족하는 데 필요할 수 있습니다. 또한 입력 장치가 활성화되면 사용자에게 표시를 제공하고 사용자가 이러한 캡처를 종료할 수 있도록 하는 사용자 에이전트 구현이 권장됩니다. 마찬가지로, 사용자 에이전트는 여러 장치가 있는 경우 사용할 정확한 미디어 캡처 장치를 사용자가 선택할 수 있도록 허용하는 등의 사용자 컨트롤을 제공하는 것이 좋습니다. 비디오 캡처 모드에서 사운드 캡처를 비활성화합니다.
