Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将Silverlight应用程序连接到WCF服务?_C#_Silverlight_Wcf_Web Services_Linq To Sql - Fatal编程技术网

C# 如何将Silverlight应用程序连接到WCF服务?

C# 如何将Silverlight应用程序连接到WCF服务?,c#,silverlight,wcf,web-services,linq-to-sql,C#,Silverlight,Wcf,Web Services,Linq To Sql,我一直在寻找这个答案,我只找到了这个,但当我试图遵循教程时,我失败了。我需要的是将我的Silverlight应用程序连接到数据库,以便显示特定表中的信息。由于我不想在我的页面和silverlight应用程序中使用相同的ORM,我创建了一个新的WCF webservice项目,并在其中创建了LINQ to SQL类 我测试了我的WCF服务,它工作得很好,但不知怎么的,我的Silverlight应用程序没有达到它。我已经更改了web.config文件,现在看起来如下所示 我的web.config &

我一直在寻找这个答案,我只找到了这个,但当我试图遵循教程时,我失败了。我需要的是将我的Silverlight应用程序连接到数据库,以便显示特定表中的信息。由于我不想在我的页面和silverlight应用程序中使用相同的ORM,我创建了一个新的WCF webservice项目,并在其中创建了LINQ to SQL类

我测试了我的WCF服务,它工作得很好,但不知怎么的,我的Silverlight应用程序没有达到它。我已经更改了web.config文件,现在看起来如下所示

我的web.config

<?xml version="1.0"?> <configuration>

  <connectionStrings>
    <add name="bd_webportosConnectionString" connectionString="Data Source=BARNEY\DEV;Initial Catalog=bd_webportos;User ID=sa;Password=Stigeo_1_adm_1"
      providerName="System.Data.SqlClient" />   </connectionStrings>   <system.web>
    <compilation debug="true" targetFramework="4.0" />   </system.web>   <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="basicHttpBindingConfig">
          <security mode="TransportCredentialOnly">
            <transport clientCredentialType="Ntlm"/>
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost:7298/DataToSilverlight.svc"
          binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService1"
          contract="DataRetrieverReference.IService1" name="BasicHttpBinding_IService1" />
    </client>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information
-->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />  </system.serviceModel>  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/> </system.webServer>    </configuration>

'.
这可能是由于试图
以跨域方式访问服务
没有适当的跨域策略
在适当的地方,或是
不适合SOAP服务。你可以
需要联系的所有者
跨域发布服务
策略文件,以确保它允许
要发送的SOAP相关HTTP头。
此错误也可能是由于使用
web服务中的内部类型
不使用
InternalsVisibleToAttribute属性。
有关详细信息,请参见内部异常
更多细节

你们能帮我解决这个大问题吗,或者甚至能为我展示另一种方法来实现我的目标吗

我最近还发现我的crossdomain.xml无法加载。。。但是我不知道那是什么意思。

根据
标签应该在你的
标签里面。把整个街区都复制到那里

编辑:关于连接到数据库部分

Silverlight无法通过WCF服务神奇地“查询”数据库,除非您创建/。要以直截了当的方式将数据从数据库获取到Silverlight客户端,您需要在WCF服务中创建方法,根据WCF方法的in参数查询数据库,将其打包到合适的数据结构中(
List
,在您链接的示例中),并将结果返回到Silverlight客户端

您收到的错误“从该地址下载元数据时出错。请验证您输入的地址是否有效。”不是与数据库相关的错误,它是一个错误,表明找不到您的WCF服务。无论您的WCF服务是否使用数据库,这种情况都会发生

看起来WCF服务中可能存在进一步的配置错误,这可能解释了为什么无法添加对该服务的引用。与“图3-13.添加对Web服务的引用”对应的对话框是什么样子的?您可以编辑问题并插入屏幕转储。

您可以尝试以下方法:


简单易用。

Silverlight在非常沙盒的环境中运行。因此,当我们想要从silverlight应用程序调用WCF服务时,我们必须在IIS的根控制器和应用程序控制器中部署simple policy.xml和crossdomain.xml。如果您从VS studio web服务器运行silverlight应用程序,并且WCF托管在VS internal web服务器中,则不会遇到此类问题

您应该将标题改为“如何将Silverlight连接到WCF服务?”因为这与数据库无关,而是与客户机-服务器通信有关。我想这解决了第一部分,但我问题的第二部分仍然没有回答。我以前从未做过这种事情,对此我有点困惑。如果这是链接数据库的一种方式,为什么你说它与数据库无关?@Bruno:这个错误与你的数据库无关,不管你是否有数据库,你都会得到这个错误。我用更多的细节编辑了我的答案。您也可以尝试启动您的项目,查看是否存在与web.config或其他与您的服务相关的错误。让您困惑的是WCF的角色。WCF不仅仅是一个数据库接口,更是一个通用服务/服务器。它可以用于很多事情。从数据库读取数据只是使用WCF服务可以做的众多事情中的一件。我已经这样做了,但没有起作用。获取数据库信息的方法未到达我的处理程序。另外,代码略有不同:webService.GetDataCompleted+=neweventhandler(webService\u GetDataCompleted);为了您的利益,我希望您没有忘记在事件初始化下面添加以下行:webService.GetDataASync();