1、1.添加Dll引用2.添加ClientAcessPolicy.xmlaccess-policy policyallow-from http-request-headers=*domain uri=/allow-fromgrant-toresource path=/ include-subpaths=true/grant-to/policy/cross-domain-access/access-policy3.添加跨域访问服务类using System;using System.Collections.Generic;using System.Linq;using System.Text;nam
2、espace WCFServer System.ServiceModel.ServiceContract public interface IcrossDomainService System.ServiceModel.OperationContract System.ServiceModel.Web.WebGet(UriTemplate = ClientAccessPolicy.xml) System.ServiceModel.Channels.Message ProvidePolicyFile(); public class crossDomainService : IcrossDomai
3、nService public System.ServiceModel.Channels.Message ProvidePolicyFile() System.IO.FileStream filestream =System.IO.File.Open(ClientAcessPolicy.xml, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite); System.Xml.XmlReader reader = System.Xml.XmlReader.Create(filestrea
4、m); System.ServiceModel.Channels.Message result = System.ServiceModel.Channels.Message.CreateMessage(System.ServiceModel.Channels.MessageVersion.None, , reader); return result;4.添加App.config ?configurationsystem.serviceModelserviceHostingEnvironment aspNetCompatibilityEnabled=behaviorsendpointBehavi
5、orsbehavior name=WCFServer.crossDomainServiceBehaviorwebHttp /behavior/endpointBehaviorsserviceBehaviors/serviceBehaviors/behaviorsservicesservice name=WCFServer.crossDomainServiceendpoint address= behaviorConfiguration= binding=webHttpBinding contract=WCFServer.IcrossDomainService /hostbaseAddresse
6、sadd baseAddress=http:/localhost:8731/baseAddresses/host/service/services/system.serviceModel/configuration(3)设计数据库(4)创建Linq To SQL(5)设计基于Linq To SQL创建数据操作类 public interface ImyDBControl int? addMytable(myTable myTable); List searchMyTable(double y1, double y2); public class myDBControl : ImyDBContr
7、ol public int? addMytable(myTable myTable) myTable.rowID = System.Guid.NewGuid(); using (testDBDataContext db = new testDBDataContext() db.myTable.InsertOnSubmit(myTable); db.SubmitChanges(); return null; public List p.y = y1 & p.y y2).ToList();(1+)完成WCF宿主 public partial class Window1 : Window publi
8、c Window1() InitializeComponent(); System.ServiceModel.ServiceHost crossDomainHost; System.ServiceModel.ServiceHost myDBControlHost; static int byteSize = 2147483647; static bool httpGetEnabled = true; static string serverURL = ; private void button1_Click(object sender, RoutedEventArgs e) crossDoma
9、inHost = new System.ServiceModel.ServiceHost(typeof(CrossDomainService); serverURL = crossDomainHost.BaseAddresses0.AbsoluteUri; crossDomainHost.Open(); satrtServer(myDBControlHost, typeof(myDBControl), typeof(ImyDBControl), ref myDBControlHost); this.button1.Content = 服务运行中 static void satrtServer(
10、string path, Type serviceType, Type serviceInterface, ref System.ServiceModel.ServiceHost host) string url = serverURL + path + host = new System.ServiceModel.ServiceHost(serviceType); /-System.ServiceModel.Description.ServiceMetadataBehavior behavior = new ServiceMetadataBehavior(); behavior.HttpGe
11、tEnabled = httpGetEnabled; behavior.HttpGetUrl = new Uri(url); host.Description.Behaviors.Add(behavior); System.Xml.XmlDictionaryReaderQuotas readerQuotas = new System.Xml.XmlDictionaryReaderQuotas(); readerQuotas.MaxStringContentLength = byteSize; readerQuotas.MaxArrayLength = byteSize; readerQuota
12、s.MaxBytesPerRead = byteSize; System.ServiceModel.BasicHttpBinding basicHttpBinding = new System.ServiceModel.BasicHttpBinding(); basicHttpBinding.ReaderQuotas = readerQuotas; basicHttpBinding.MaxReceivedMessageSize = byteSize; host.AddServiceEndpoint(serviceInterface, basicHttpBinding, url); host.O
13、pen();测试在浏览器中打入8731/8731/myDBControlHost/(6)为Silverlight项目添加WCF引用1.重新创建一个Silverlight项目2.确保上步创建的WCF宿主已运行并已启动3.在Silverlight中引用WCF服务(7)开发Silverlight页面 /Canvas加载事件 private void Canvas_Loaded(object sender, RoutedEventArgs e) /保存按钮不可见 save.Visibility = Visibility.Collapsed; /创建按钮 private void create_Clic
14、k(object sender, RoutedEventArgs e) /清空文本框 x.Text = y.Text = 0 z.Text = System.DateTime.Now.ToString(); /- /保存按钮可见 save.Visibility = Visibility.Visible; /创建按钮不可见 create.Visibility = Visibility.Collapsed; /保存按钮 private void save_Click(object sender, RoutedEventArgs e) /构建一个行对象 myService.myTable row =
15、 new mySilverlight.myService.myTable(); row.x = x.Text; row.y = double.Parse(y.Text); row.z = DateTime.Parse(z.Text); row.rowID = System.Guid.NewGuid(); /- /调用WCF服务完成保存 myService.ImyDBControlClient ser = new mySilverlight.myService.ImyDBControlClient(); /保存完成后事件 ser.addMytableCompleted += new EventH
16、andler(ser_addMytableCompleted); /保存 ser.addMytableAsync(row); /保存按钮不可见 /创建按钮可见 create.Visibility = Visibility.Visible; /保存完成后 void ser_addMytableCompleted(object sender, mySilverlight.myService.addMytableCompletedEventArgs e) MessageBox.Show(添加完成); private void search_Click(object sender, RoutedEve
17、ntArgs e) /查询完成后的返回事件 ser.searchMyTableCompleted += new EventHandler(ser_searchMyTableCompleted); /查询 ser.searchMyTableAsync(double.Parse(y1.Text), double.Parse(y2.Text); /查询完成后 void ser_searchMyTableCompleted(object sender, mySilverlight.myService.searchMyTableCompletedEventArgs e) dg.ItemsSource = e.Result;
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2