日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[silverlight]WCF和Web Service(ASMX)的soap header传输方法

發布時間:2024/4/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [silverlight]WCF和Web Service(ASMX)的soap header传输方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在研究silverlight的調用webservice或者WCF的安全驗證問題,其中一個最基本的安全驗證方法就是把用戶名或者密碼加入soap header里去,但是很多人都不知道怎么做,因為silverlight沒有soapheader這個類。下面是我總結的方法,希望能幫助有需要的人。

1.webservice(ASMX)的soap header傳輸。

a.客戶端,也就是XXX.xaml.cs這個頁面.

private void button_Click(object sender, RoutedEventArgs e)
??????? {???????????

??????????? Binding myBinding = new BasicHttpBinding();
??????????? EndpointAddress myAddress = new EndpointAddress("http://localhost:3597/WebService3.asmx");
??????????? ServiceReference5.WebService3SoapClient service = new ServiceReference5.WebService3SoapClient(myBinding, myAddress);
??????????? service.HelloWorldCompleted+=new EventHandler<HelloWorldCompletedEventArgs>(service_HelloWorldCompleted);
??????????? OperationContext.Current = new OperationContext((IContextChannel)service.InnerChannel);
??????????? MessageHeader header = MessageHeader.CreateHeader("user", "", "utence.com");
??????????? OperationContext.Current.OutgoingMessageHeaders.Add(header);
??????????? header = MessageHeader.CreateHeader("pwd", "", "utence");
??????????? OperationContext.Current.OutgoingMessageHeaders.Add(header);??
??????????? service.HelloWorldAsync();

??????? }

??????? void service_HelloWorldCompleted(object sender, HelloWorldCompletedEventArgs e)
??????? {
??????????? MessageBox.Show(e.Result);
??????? }

?

b.WebService3.asmx代碼

? [WebMethod]

??????? public string HelloWorld()
??????? {
??????????? Stream HttpStream = HttpContext.Current.Request.InputStream;
??????????? HttpStream.Position = 0;
??????????? XmlDocument dom = new XmlDocument();
??????????? dom.Load(HttpStream);
????????????return dom.InnerXml.ToString(); //獲取整個xml字符串
??????????? //return dom.GetElementsByTagName("user").Item(0).InnerText; //獲取user節點的值
??????????? //return dom.GetElementsByTagName("pwd").Item(0).InnerText; //獲取pwd節點的值

??????? }

?

2.WCF的soap header傳輸

a.客戶端,也就是XXX.xaml.cs這個頁面.

private void button_Click(object sender, RoutedEventArgs e)
??????? {??????

??????????? Binding myBinding = new BasicHttpBinding();
??????????? EndpointAddress myAddress = new EndpointAddress("http://localhost:3597/Service3.svc");
??????????? //ServiceReference.WebService3SoapClient service = new ServiceReference5.WebService3SoapClient(myBinding, myAddress);
??????????? ServiceReference6.Service3Client service = new ServiceReference6.Service3Client(myBinding, myAddress);
??????????? service.GetWorkCompleted += new EventHandler<GetWorkCompletedEventArgs>(service_GetWorkCompleted);
??????????? OperationContext.Current = new OperationContext((IContextChannel)service.InnerChannel);
??????????? MessageHeader header = MessageHeader.CreateHeader("user", "", "utence.com");
??????????? OperationContext.Current.OutgoingMessageHeaders.Add(header);
??????????? header = MessageHeader.CreateHeader("pwd", "", "utence");
??????????? OperationContext.Current.OutgoingMessageHeaders.Add(header);??
??????????? service.GetWorkAsync();

}

??????? void service_GetWorkCompleted(object sender, GetWorkCompletedEventArgs e)
??????? {
??????????? MessageBox.Show(e.Result);
??????? }

b.Service3.svc代碼

??????? public string GetWork()
??????? {
??????????? OperationContext.Current.RequestContext.RequestMessage.ToString();?//返回整個XML代碼
??????????? int index = OperationContext.Current.IncomingMessageHeaders.FindHeader("user","");//獲取節點user的索引值
??????????? string h = OperationContext.Current.IncomingMessageHeaders.GetHeader<string>(index);//返回user節點值

??????????? return h;
??????? }

轉載于:https://www.cnblogs.com/lwzeng/archive/2010/05/19/1739043.html

總結

以上是生活随笔為你收集整理的[silverlight]WCF和Web Service(ASMX)的soap header传输方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。