Silverlight WCF服务在服务器上部署后不会从数据库返回任何数据
我有一个silverlight应用程序,它使用wcf服务从数据库(SQL Server)读取数据,而不使用实体框架,只需单击一个按钮。我在本地系统上进行了部署,效果很好。与我在服务器上部署并发布的相同。我打开页面,点击按钮获取数据。但它不显示数据,也不显示任何错误。Silverlight WCF服务在服务器上部署后不会从数据库返回任何数据,wcf,silverlight,Wcf,Silverlight,我有一个silverlight应用程序,它使用wcf服务从数据库(SQL Server)读取数据,而不使用实体框架,只需单击一个按钮。我在本地系统上进行了部署,效果很好。与我在服务器上部署并发布的相同。我打开页面,点击按钮获取数据。但它不显示数据,也不显示任何错误。 我不清楚问题出在哪一边。在大多数情况下,这可能是由数据库访问引起的。因此,以下步骤可能对您有所帮助: 检查您的WCF服务是否可访问 检查WCF配置中的连接字符串是否正确 如果要检查WCF服务,有两种方法: 您可以从develop
我不清楚问题出在哪一边。在大多数情况下,这可能是由数据库访问引起的。因此,以下步骤可能对您有所帮助:
- 检查您的WCF服务是否可访问
- 检查WCF配置中的连接字符串是否正确
- 您可以从developer compt窗口运行wcftestclient.exe,该窗口是visual studio的内置测试工具
- 如果部署成功,您应该能够通过IE浏览您的服务,url可能类似- (这是用于访问服务的Microsoft官方知识库-)
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”。。。非常感谢你在这方面的帮助。再次感谢你。。。