本地可以访问数据库,发布到iis后就访问不到数据了(2天了呀,帮帮忙呀!!!)
我做了一个silverlight的项目是通过wcf访问数据的,wcf在web下面。在本地调试的时候一切正常但是发布到iis下后,页面都能正常显示,但是数据却无法访问。为了测试我我特意在一个访问数据库完成事件的执行函数中增加了如下语句
if (e.Error != null)
{
MessageBox.Show(e.Error.ToString());
}
else
{
MessageBox.Show(e.Result.ToString());
}
显示的错误为:跨域访问之类的错误。
我按照网上一些帖子中的方法增加了crossdomain.xml和clientaccesspolicy.xml 文件,并且放的位子也没问题,在浏览器中也可以访问到这两个文件了,但是最后还是报这个错误。(并且我的wcf和web是在一台机器上呀,这也存在跨域访问吗,而且我是用自己本机访问的如 192.168.27.233:7777)
另外关于ServiceReferences.ClientConfig文件配置方面的问题
网上有帖子说,这里的endpoint address 需要指向wcf所在的主句,我也改成了相应的192.168.27.233(这是我自己机器的ip,我的silverlight,web,wcf均在一台电脑上,只有访问的数据库是局域网中其他主机)
最后我用firebug跟踪的时候发现最后一个请求只到请求那个默认的.aspx页面,并没有网上说的请求crossdomain.xml和clientaccesspolicy.xml 文件的记录,是不是还要在web.config里面配置些什么。
[解决办法]
那就是Silverlight调用WCF的配置文件问题了,由于带有端口号,在VS下运行下引用的服务地址带有端口号,编译运行,没什么问题,但是一旦发布发到IIS中去,这个WCF服务的地址就不带端口号了,所以会找不着的。
配置服务的地址为:http://localhost/xxx/xxx.svc
Silverlight服务配置文件里里使用"../xxx/xxx.scv"相对路径格式
[解决办法]