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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux c调用wcf服务,Silverlight+WCF实现跨域调用

發布時間:2025/3/20 linux 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux c调用wcf服务,Silverlight+WCF实现跨域调用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在這篇文章中,WCF扮演服務器,向外提供LoginVaild服務;Silverlight扮演客戶端,調用WCF提供的LoginVaild服務。思路有了,下面進行代碼實現。

數據庫腳本實現

新建T_User表,在表中添加兩個字段username、password,向表中插入一條數據admin admin,腳本如下:

USE [test]

GO

/****** Object:? Table [dbo].[T_User]? ? Script Date: 09/28/2014 21:12:02 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[T_User](

[username] [varchar](20) NOT NULL,

[password] [varchar](20) NOT NULL,

CONSTRAINT [PK_T_User] PRIMARY KEY CLUSTERED

(

[username] ASC

)WITH (PAD_INDEX? = OFF, STATISTICS_NORECOMPUTE? = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS? = ON, ALLOW_PAGE_LOCKS? = ON) ON [PRIMARY]

) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

INSERT [dbo].[T_User] ([username], [password]) VALUES (N'admin', N'admin')

WCF服務器實現

1.新建一個WCF服務庫項目,在默認生成的IServer1.cs接口在添加LoginVaild服務的聲明:

[OperationContract]

bool LoginVaild(string userName, string password);

2.添加ADO.Net實體數據模型文件--Model.edmx,用于對數據表T_User的訪問;

3.在Service1.svc中對LoginVaild方法進行實現:

public bool LoginVaild(string userName, string password)

{

bool result = false;

//需要訪問的ADO.Net數據實體模型

using (SLtestEntitiesSecond entities = new SLtestEntitiesSecond())

{

var user = entities.T_User.Where(c => c.username == userName && c.password == password).SingleOrDefault();

if (user == null)

{

result = false;

}

else

{

result = true;

}

}

return result;

}

4.在項目的根目錄添加跨域訪問文件clientaccesspolicy.xml,內容如下:

5.設定WCF服務器使用特定端口進行訪問,方法:選中WCF服務器項目-->郵件屬性-->Web-->特定端口,輸入1316。這樣保證我們每次可以通過1316端口訪問WCF提供的服務。

到此,WCF服務器端配置完成,選中Service1.svc文件,在瀏覽器中瀏覽器下WCF提供的服務。

Silverlight客戶端實現

1.新建Silverlight應用程序,在引用中添加服務引用,在地址欄輸入Service1.svc文件在瀏覽器中的路徑,比如我的是:http://localhost:1316/Service1.svc;

2.新建Silverlight用戶控件Login.xaml文件,在顯示頁面添加用戶名、密碼TextBox和登錄Button;

3.在Login.xaml后臺通過調用WCF提供的服務對用戶輸入進行判斷,代碼如下:

private void button1_Click(object sender, RoutedEventArgs e)

{

string userName = txtusername.Text.Trim();

string password = txtpassword.Text.Trim();

Service1Client client = new Service1Client();

client.LoginVaildCompleted += new EventHandler(client_LoginVaildCompleted);

client.LoginVaildAsync(userName, password);

client.CloseAsync();

}

void client_LoginVaildCompleted(object sender, LoginVaildCompletedEventArgs e)

{

if (e.Error == null)

{

//MessageBox.Show(e.Result.ToString());

if (e.Result == true)

{

this.Content = new MainPage();

}

else

{

MessageBox.Show("用戶名或密碼錯誤!");

}

}

else

{

MessageBox.Show(e.Error.ToString());

}

}

4.在App.xaml配置文件設置Login.xaml為起始頁,代碼如下:

private void Application_Startup(object sender, StartupEventArgs e)

{

this.RootVisual = new Login();

}

到此,客戶端配置完成,運行Silverlight客戶端項目即可查看結果。源碼下載地址:

------------------------------------------分割線------------------------------------------

具體下載目錄在 /2015年資料/2月/27日/Silverlight+WCF實現跨域調用/

------------------------------------------分割線------------------------------------------

現在回首整個實現過程,有點面向服務編程的意思:WCF提供一個服務,然后把訪問服務的接口公開,想調用此服務的項目只要添加此服務的引用便能調用WCF提供的服務。

在實現過程中,有個問題至今尚未解決,在WCF服務器項目中配置ADO.Net實體數據模型時,如果是用SQL Server的SQL Server身份驗證方式登錄,便會報“服務器返回了錯誤 Not found”異常;改成Windows身份驗證問題解決。這是個治標不治本的解決方案,對此問題,希望大神能夠給出解釋。

總結

以上是生活随笔為你收集整理的linux c调用wcf服务,Silverlight+WCF实现跨域调用的全部內容,希望文章能夠幫你解決所遇到的問題。

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