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
Silverlight WCF服务在服务器上部署后不会从数据库返回任何数据_Wcf_Silverlight - Fatal编程技术网

Silverlight WCF服务在服务器上部署后不会从数据库返回任何数据

Silverlight WCF服务在服务器上部署后不会从数据库返回任何数据,wcf,silverlight,Wcf,Silverlight,我有一个silverlight应用程序,它使用wcf服务从数据库(SQL Server)读取数据,而不使用实体框架,只需单击一个按钮。我在本地系统上进行了部署,效果很好。与我在服务器上部署并发布的相同。我打开页面,点击按钮获取数据。但它不显示数据,也不显示任何错误。 我不清楚问题出在哪一边。在大多数情况下,这可能是由数据库访问引起的。因此,以下步骤可能对您有所帮助: 检查您的WCF服务是否可访问 检查WCF配置中的连接字符串是否正确 如果要检查WCF服务,有两种方法: 您可以从develop

我有一个silverlight应用程序,它使用wcf服务从数据库(SQL Server)读取数据,而不使用实体框架,只需单击一个按钮。我在本地系统上进行了部署,效果很好。与我在服务器上部署并发布的相同。我打开页面,点击按钮获取数据。但它不显示数据,也不显示任何错误。
我不清楚问题出在哪一边。

在大多数情况下,这可能是由数据库访问引起的。因此,以下步骤可能对您有所帮助:

  • 检查您的WCF服务是否可访问
  • 检查WCF配置中的连接字符串是否正确

如果要检查WCF服务,有两种方法:

  • 您可以从developer compt窗口运行wcftestclient.exe,该窗口是visual studio的内置测试工具

  • 如果部署成功,您应该能够通过IE浏览您的服务,url可能类似- (这是用于访问服务的Microsoft官方知识库-)


您可以在代码中生成代理,如下所示

假设您通过添加服务引用自动生成了代理

当您尝试访问WCF web方法时,您需要一个serviceclient。假设它是某个ProxyClient

在dataservice类/任何地方,您可以获取SomeProxyClient类型的属性

在属性的getter方法中,使用WCF服务URL尝试以下代码

私有SomeProxyClient\u代理

SomeProxyClient Proxy
    {

        get
        {

            if (_proxy == null)
            {
                var binding = new BasicHttpBinding
                {
                    MaxReceivedMessageSize = 2147483647,
                    MaxBufferSize = 2147483647

                };

                Uri uri = null;
                if (!System.ComponentModel.DesignerProperties.IsInDesignTool)
                {
                    hostName = HtmlPage.Document.DocumentUri.Host;
                    portNo = HtmlPage.Document.DocumentUri.Port;

                        uri = new Uri("http://" + hostName + ":" + portNo.ToString() + "/y/x.svc");

                }
                else
                {
                    uri = new Uri("http://localhost:2700/x.svc");
                }

                _proxy = new SomeProxyClient(binding, new EndpointAddress(uri));
                _proxy.Endpoint.Binding.CloseTimeout = new TimeSpan(01, 20, 10);
                _proxy.Endpoint.Binding.ReceiveTimeout = new TimeSpan(01, 20, 10);
                _proxy.Endpoint.Binding.SendTimeout = new TimeSpan(01, 20, 10);
                _proxy.Endpoint.Binding.OpenTimeout = new TimeSpan(01, 20, 10);

                return _proxy;
            }
            return _proxy;
        }
    }
然后通过使用此变量,您可以访问WCF web方法

通过这种方式,您不必一直接触服务引用,即从开发到生产部署。它将自动获取相应的服务器和端口地址


希望这有帮助

听起来您的IIS无法处理.svc请求


如果是这种情况,您可能会在这里找到一些东西-

实际上问题在于在web.config文件中设置端点地址,而且随着服务部署到其他机器中,应用程序的URL也发生了更改。所以我做了一些重要的改变如下:1。在web.config文件中提供了与ServiceReference.ClientConfig文件中相同的端点地址、端点名称和合同详细信息。2.在ServiceReference.ClientConfig中更改端点地址,但不更改特定的端口详细信息:
http://Localhost/.....
而不是
http://Localhost:56279/.....
和3。在应用程序中进行编码,以获取执行应用程序的计算机的URI地址,这样无论应用程序部署在何处,用户都不必担心本地主机地址及其端口详细信息:
URI servUri=new URI(“../Service.svc”,UriKind.Relative);EndpointAddress servAddr=新的EndpointAddress(servUri);ServiceReferenceForSelect.ServiceForSelectClient objSelect=newserviceforselectclient(“BasicHttpBinding_IService”,servAddr)这解决了问题。谢谢大家的帮助。

嗨。。谢谢你的快速回复。您现在能告诉我如何检查WCF服务是否可以访问。。。?我想连接字符串不能出现问题,因为它与我的本地系统配合得很好。我还尝试在本地机器的IIS中部署我的应用程序,效果很好。下面是我在应用程序中使用的ConnectionString代码。代码4 web.config文件:您好。我只是尝试创建一个非常简单的wcf应用程序。这是一个点击按钮,我试图打印“你好世界”的页面上。我发布了该服务,而且它在本地系统上也可以正常工作,但当我尝试在服务器上部署时,它却不能正常工作。这个应用程序非常简单,没有复杂性,没有数据库连接,什么都没有。但仍然无法从服务器调用服务。检查服务,(Service1.svc-.右键单击->浏览)工作正常,但我不知道为什么它无法通过应用程序调用。现在越来越令人困惑了。对此一无所知。您是否在.web项目中添加了启用silverlight的WCF服务,或者您正在从其他项目访问该服务?嗨,Zafar,我不是从其他项目访问WCF服务。它在我的Silverlight应用程序中。谢谢。你是如何生成代理来访问服务的。是通过引用自动生成的代理,还是通过自定义代理生成。请发布用于生成代理的URI。如果可能,发布servicereferences.clientconfig文件的内容。您好Zafar,上面是我的servicereferences.clientconfig文件,它指的是自动生成的代理。您好Zafar,我不太擅长这个。我理解编写用于生成代理和所有代理的手动代码的原因。但是你也能帮忙吗,比如我到底应该在哪里写这段代码,我应该从哪里调用这段代码?在上面的代码中,什么是“SomeProxyClient”。。。非常感谢你在这方面的帮助。再次感谢你。。。