VS2010Silverlight调用Wcf配置说明

VS2010Silverlight调用Wcf配置说明,第1张

概述代码参考-->SilverlightWCF.Web                      SilverlightWCF 一.项目说明: 1.一个承载于网站的Silverlight解决方案 2.在网站工程里建立了一个Wcf,简单调用数据库 3.在Silverlight工程里添加该Wcf的引用,并调用该Wcf显示数据 ======================================== 代码参考-->SilverlightWCF.Web                      SilverlightWCF 一.项目说明: 1.一个承载于网站的Silverlight解决方案 2.在网站工程里建立了一个Wcf,简单调用数据库 3.在Silverlight工程里添加该Wcf的引用,并调用该Wcf显示数据 ========================================================================================= 二.部署方法: 1.把网站工程生成一下 2.在网站工程上右键选择生成部署包(说明:包的位置可以在网站工程属性的打包/发布Web选项的创建包位置上看到)    D:\VS2010Pro\SilverlightWCF.Web\obj\DeBUG\Package\PackageTmp   把这个目录在IIS上新建一个虚拟目录,然后选择这个虚拟目录,右键选择SilverlightWCFTestPage.HTML就可以浏览了 3.把Silverlight工程上的Wcf引用重新添加(注意:使用http://192.168.18.205:82/SilverlightWCF/wcfMain.svc  前往的方式,不是发现的方式,这个是部署到IIS上的虚拟目录的路径) 4.重新生成解决方案 5.在网站工程上右键选择重新生成部署包(主要是为了重新指向一下Wcf引用,让他指向IIS上的Wcf路径) 6.注意需要cmd命令行执行IISreset重启动IIS,防止没有应用最新的文件 ========================================================================================= 三.遇到的问题 1.单击按钮发现下拉框是有数据的,但是显示一片空白,检查xaml文件             <ComboBox.ItemTemplate>                 <DataTemplate>                     <StackPanel OrIEntation="Horizontal">                         <TextBlock Text="{Binding Fname}" />                         <TextBlock Text="," />                         <TextBlock Text="{Binding FCaption}" />                     </StackPanel>                 </DataTemplate>             </ComboBox.ItemTemplate> 发现绑定没错 结果是Wcf定义的接口文件IwcfMain.cs  ,Fname和FCaption 属性没有加[DataMember]导致客户端无法读取该属性     [DataContract]     public class FIEldInfo     {         [DataMember]         public string Fname { get; set; }         [DataMember]         public string FCaption { get; set; }     } 2.解决尝试向 URI“http://localhost:19464/wcfMain.svc”发出请求时出错。这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略,或策略不适用于 SOAP 服务。您可能需要与该服务的所有者联系,以发布跨域策略文件并确保该文件允许发送 SOAP 相关的 http 标头。出现此错误也可能是由于使用的是 Web 服务代理中的内部类型而没有使用 InternalsVisibletoAttribute 属性。有关详细信息,请参阅内部异常。 解决方法: 一、在WCF项目根目录下添加clIEntaccesspolicy.xml文件 Code <?xml version="1.0" enCoding="utf-8" ?> <access-policy>   <cross-domain-access>     <policy>       <allow-from http-request-headers="*">         <domain uri="*"/>       </allow-from>       <grant-to>         <resource path="/" include-subpaths="true"/>       </grant-to>     </policy>   </cross-domain-access> </access-policy> 二、在silverlight项目中添加一个中介类ServerManager.cs Code public class ServerManager     {         private static ServiceWcfClIEnt servicePicture = new ServiceWcfClIEnt();         internal static ServiceWcfClIEnt GetPox()         {             if (servicePicture.State == System.ServiceModel.CommunicationState.Created)             {                 servicePicture.Endpoint.Address = new System.ServiceModel.EndpointAddress("http://localhost:52207/ServiceWcf.svc");                 return servicePicture;             }             else             {                 return servicePicture;             }         }     } 三、实例化实体类的时候一般是这样:ServiceWcfClIEnt clIEntWcf = new ServiceWcfClIEnt(); 换成:ServiceWcfClIEnt clIEntWcf = ServerManager.GetPox(); 3.如果第2步都已经处理正确了,还提示跨域    则有可能是IIS没有重新启动的原因,可以在代码中加入提示框进行跟踪,验证代码是不是最新的 4.如果出现远程服务器返回错误 not Found 很可能是代码写错了        例如Pigeon项目                 //sConnectionStr = System.Configuration.ConfigurationManager.                 //                    ConnectionStrings["PigeonConnectionString"]                 //                        .ConnectionString;   取这个连接串有错误   后来改成手工连接串就好了 sConnectionStr = "Data Source=192.168.18.205;Database=Pigeon;UID=sa;Pwd=kicpassword"; 不够WCF返回的错误不好跟踪问题 5.遇到程序代码调试时可以正常读取web.config数据库连接串 System.Configuration.ConfigurationManager.ConnectionStrings["PigeonConnectionString"].ToString() 但部署到IIS上,却数据库连接失败,经过写日志跟踪发现读取的连接串为$(Replacabletoken_PigeonConnectionString-Web.config Connection String_0)    解决方法   需要修改项目文件,注意是项目文件(即:D:\VS2010Pro\Pigeon.Web\Pigeon.Web.csproj   在PropertyGroup里添加如下属性: <AutoparameterizationWebConfigConnectionStrings>False</AutoparameterizationWebConfigConnectionStrings> 这样就会正常生成自定义的连接串 以下是截取的片段 <?xml version="1.0" enCoding="utf-8"?> <Project Toolsversion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">   <PropertyGroup>     <AutoparameterizationWebConfigConnectionStrings>False</AutoparameterizationWebConfigConnectionStrings>     <Configuration Condition=" '$(Configuration)' == '' ">DeBUG</Configuration> 总结

以上是内存溢出为你收集整理的VS2010Silverlight调用Wcf配置说明全部内容,希望文章能够帮你解决VS2010Silverlight调用Wcf配置说明所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1017231.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存