显示不出来了,急,急,急

时间:2022-08-21 08:48:44
asp.net站点中使用了“Silverlight”的“Xap页面”。

现状:
  站点中添加了“启用了Silverlight的WCF服务”,用来为“Silverlight”提供数据访问。发布之后,部署在IIS6.0下,“Xap页面”中的内容就显示不出来了,已经添加了“MIME”。而在VS2010开发环境中是正常的呢?

问题:请问这是为什么呢?是不是“启用了Silverlight的WCF服务”需要在“IIS6下”进行什么配置?

17 个解决方案

#1


“MIME类型”这个没有问题。
什么是“跨域访问文件”,好像没有?必须要放么?

IIS下的“WCF”访问如下图:
显示不出来了,急,急,急

#2


准确来讲:
     “Silverlight”访问不到部署在“IIS6”上的“WCF  Servcie服务”。

#3


跨域访问文件,clientaccesspolicy.xml:

<?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>
文件加上了啊,但是提示错误信息如下:

网页错误详细信息

用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3; Zune 4.7; .NET CLR 1.1.4322)
时间戳: Sat, 24 Mar 2012 06:10:29 UTC


消息: Unhandled Error in Silverlight Application 操作过程中出现异常,结果无效。有关异常的详细信息,请查看 InnerException。 位于 System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
位于 MyCharts.MyChartsService.GetWaterMonitoringDatasCompletedEventArgs.get_Result()
位于 MyCharts.WaterMonitoring.client_GetWaterMonitoringDatasCompleted(Object sender, GetWaterMonitoringDatasCompletedEventArgs e)
位于 MyCharts.MyChartsService.ChartsServiceClient.OnGetWaterMonitoringDatasCompleted(Object state)
行: 1
字符: 1
代码: 0
URI: http://10.10.233.120/Tj/Web/WaterMonitoring.aspx

#4


断点跟踪:
client_GetWaterMonitoringDatasCompleted(Object sender, GetWaterMonitoringDatasCompletedEventArgs e)

#5


引用 4 楼 sundayx 的回复:
断点跟踪:
client_GetWaterMonitoringDatasCompleted(Object sender, GetWaterMonitoringDatasCompletedEventArgs e)


在VS2010下没有任何问题的,设断点有用么?

#6


哦,没注意看上面的,只看到异常信息了。
你那个文件时策略文件一般用于silverlight socket上,将crossdomain.xml这个文件放到iis中试试。
<?xml version="1.0" ?> 
<cross-domain-policy>
  <allow-access-from domain="*" /> 
  <site-control permitted-cross-domain-policies="all" /> 
  <allow-http-request-headers-from domain="*" headers="*" /> 
</cross-domain-policy>

#7


引用 6 楼 sundayx 的回复:
哦,没注意看上面的,只看到异常信息了。
你那个文件时策略文件一般用于silverlight socket上,将crossdomain.xml这个文件放到iis中试试。
<?xml version="1.0" ?> 
<cross-domain-policy>
  <allow-access-from domain="*" /> 
  <site-control permitted-cro……


文件加上了,但是还是不行啊。

错误信息如下:
网页错误详细信息

用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; AskTbPTV/5.11.3.15590; .NET4.0C; .NET4.0E)
时间戳: Sat, 24 Mar 2012 09:05:59 UTC


消息: Unhandled Error in Silverlight Application [Async_ExceptionOccurred]
参数: 
调试资源字符串不可用。密钥和参数通常提供足够的信息用以诊断该问题。请访问 http://go.microsoft.com/fwlink/?linkid=106663&Version=4.1.10111.0&File=System.dll&Key=Async_ExceptionOccurred   位于 System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
   位于 MyCharts.MyChartsService.GetWaterMonitoringDatasCompletedEventArgs.get_Result()
   位于 MyCharts.WaterMonitoring.client_GetWaterMonitoringDatasCompleted(Object sender, GetWaterMonitoringDatasCompletedEventArgs e)
   位于 MyCharts.MyChartsService.ChartsServiceClient.OnGetWaterMonitoringDatasCompleted(Object state)
行: 1
字符: 1
代码: 0
URI: http://localhost/Tj/Web/WaterMonitoring.aspx

#8


这不是很清楚了,我没这样使用过,呵呵。
在vs调试状态下silverlight调用发布到iis的webservice是正常的,但是把silverlight也发布到iis上就出现了上面的问题么?

#9


引用 8 楼 sundayx 的回复:
这不是很清楚了,我没这样使用过,呵呵。
在vs调试状态下silverlight调用发布到iis的webservice是正常的,但是把silverlight也发布到iis上就出现了上面的问题么?


不是直接发布“asp.net站点”站点的么?
 
“vs调试状态下silverlight调用发布到iis的webservice”???“启用了Silverlight的WCF服务”它也是VS2010中的没有单独发布啊。

用的是“启用了Silverlight的WCF服务”,它是怎么发布的???

#10


有人么,谢谢了。

#11


http://blog.csdn.net/madaming/article/details/6329640

#12


嗯。谢谢“sp1234”,谢谢大家。

string weburl = Application.Current.Host.Source.ToString();
weburl = weburl.Substring(0, (weburl.Length - 23)) + "/ChartsService.svc";
MyChartsService.ChartsServiceClient client = new MyChartsService.ChartsServiceClient("CustomBinding_ChartsService1", weburl);

这样写就好了。



但是还想再请教下,跨域到底指的是什么?
“clientaccesspolicy.xml”和“crossdomain.xml”分别有什么作用?

#13


http://blog.csdn.net/madaming/article/details/6358519

#14


#region 引用WCF public static EndpointAddress getEndpointAddress(string relative_uri) { return new EndpointAddress(new Uri(Application.Current.Host.Source, relative_uri)); } public static void use_wcf(ref wcfclient wcf_instance, string end_point_address) { EndpointAddress _end_point_address = getEndpointAddress(end_point_address); //调用wcf超时的解决办法 #if (TRACE) wcf_instance.Endpoint.Binding.OpenTimeout = new TimeSpan(0, 18, 0); wcf_instance.Endpoint.Binding.CloseTimeout = new TimeSpan(0, 18, 0); wcf_instance.Endpoint.Binding.SendTimeout = new TimeSpan(1, 18, 0); wcf_instance.Endpoint.Binding.ReceiveTimeout = new TimeSpan(1 , 18, 0); #else wcf_instance.Endpoint.Binding.OpenTimeout = new TimeSpan(0, 1, 0); wcf_instance.Endpoint.Binding.CloseTimeout = new TimeSpan(0, 1, 0); wcf_instance.Endpoint.Binding.SendTimeout = new TimeSpan(0, 5, 0); wcf_instance.Endpoint.Binding.ReceiveTimeout = new TimeSpan(0, 5, 0); #endif wcf_instance.Endpoint.Address = _end_point_address; } #endregion wcfclient my_wcf_instance=new wcfclient(); use_wcf(ref my_wcf_instance, @"../Services/myWCF.svc");
use_wcf(ref my_wcf_instance, @"../Services/myWCF.svc");
 

把你的wcf引用实例如my_wcf_instance经过方法use_wcf(ref my_wcf_instance, @"../Services/myWCF.svc")一下,你的问题可能就解决了。红色的那段代码我想你应该能看明白。

谢谢,这个方法的过程是怎样的?

这样做有什么好处???

#15


其实第一个链接地址是我先前使用的,是调试过的。第二个链接地址是我后来看到的,认为说的有点道理,比我的第一个方法更理论些,但没有调试过。

#16


两边的环境是不是不一样

#17


引用 13 楼 madaming 的回复:
http://blog.csdn.net/madaming/article/details/6358519


嗯。谢谢了。。。

#1


“MIME类型”这个没有问题。
什么是“跨域访问文件”,好像没有?必须要放么?

IIS下的“WCF”访问如下图:
显示不出来了,急,急,急

#2


准确来讲:
     “Silverlight”访问不到部署在“IIS6”上的“WCF  Servcie服务”。

#3


跨域访问文件,clientaccesspolicy.xml:

<?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>
文件加上了啊,但是提示错误信息如下:

网页错误详细信息

用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3; Zune 4.7; .NET CLR 1.1.4322)
时间戳: Sat, 24 Mar 2012 06:10:29 UTC


消息: Unhandled Error in Silverlight Application 操作过程中出现异常,结果无效。有关异常的详细信息,请查看 InnerException。 位于 System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
位于 MyCharts.MyChartsService.GetWaterMonitoringDatasCompletedEventArgs.get_Result()
位于 MyCharts.WaterMonitoring.client_GetWaterMonitoringDatasCompleted(Object sender, GetWaterMonitoringDatasCompletedEventArgs e)
位于 MyCharts.MyChartsService.ChartsServiceClient.OnGetWaterMonitoringDatasCompleted(Object state)
行: 1
字符: 1
代码: 0
URI: http://10.10.233.120/Tj/Web/WaterMonitoring.aspx

#4


断点跟踪:
client_GetWaterMonitoringDatasCompleted(Object sender, GetWaterMonitoringDatasCompletedEventArgs e)

#5


引用 4 楼 sundayx 的回复:
断点跟踪:
client_GetWaterMonitoringDatasCompleted(Object sender, GetWaterMonitoringDatasCompletedEventArgs e)


在VS2010下没有任何问题的,设断点有用么?

#6


哦,没注意看上面的,只看到异常信息了。
你那个文件时策略文件一般用于silverlight socket上,将crossdomain.xml这个文件放到iis中试试。
<?xml version="1.0" ?> 
<cross-domain-policy>
  <allow-access-from domain="*" /> 
  <site-control permitted-cross-domain-policies="all" /> 
  <allow-http-request-headers-from domain="*" headers="*" /> 
</cross-domain-policy>

#7


引用 6 楼 sundayx 的回复:
哦,没注意看上面的,只看到异常信息了。
你那个文件时策略文件一般用于silverlight socket上,将crossdomain.xml这个文件放到iis中试试。
<?xml version="1.0" ?> 
<cross-domain-policy>
  <allow-access-from domain="*" /> 
  <site-control permitted-cro……


文件加上了,但是还是不行啊。

错误信息如下:
网页错误详细信息

用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; AskTbPTV/5.11.3.15590; .NET4.0C; .NET4.0E)
时间戳: Sat, 24 Mar 2012 09:05:59 UTC


消息: Unhandled Error in Silverlight Application [Async_ExceptionOccurred]
参数: 
调试资源字符串不可用。密钥和参数通常提供足够的信息用以诊断该问题。请访问 http://go.microsoft.com/fwlink/?linkid=106663&Version=4.1.10111.0&File=System.dll&Key=Async_ExceptionOccurred   位于 System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
   位于 MyCharts.MyChartsService.GetWaterMonitoringDatasCompletedEventArgs.get_Result()
   位于 MyCharts.WaterMonitoring.client_GetWaterMonitoringDatasCompleted(Object sender, GetWaterMonitoringDatasCompletedEventArgs e)
   位于 MyCharts.MyChartsService.ChartsServiceClient.OnGetWaterMonitoringDatasCompleted(Object state)
行: 1
字符: 1
代码: 0
URI: http://localhost/Tj/Web/WaterMonitoring.aspx

#8


这不是很清楚了,我没这样使用过,呵呵。
在vs调试状态下silverlight调用发布到iis的webservice是正常的,但是把silverlight也发布到iis上就出现了上面的问题么?

#9


引用 8 楼 sundayx 的回复:
这不是很清楚了,我没这样使用过,呵呵。
在vs调试状态下silverlight调用发布到iis的webservice是正常的,但是把silverlight也发布到iis上就出现了上面的问题么?


不是直接发布“asp.net站点”站点的么?
 
“vs调试状态下silverlight调用发布到iis的webservice”???“启用了Silverlight的WCF服务”它也是VS2010中的没有单独发布啊。

用的是“启用了Silverlight的WCF服务”,它是怎么发布的???

#10


有人么,谢谢了。

#11


http://blog.csdn.net/madaming/article/details/6329640

#12


嗯。谢谢“sp1234”,谢谢大家。

string weburl = Application.Current.Host.Source.ToString();
weburl = weburl.Substring(0, (weburl.Length - 23)) + "/ChartsService.svc";
MyChartsService.ChartsServiceClient client = new MyChartsService.ChartsServiceClient("CustomBinding_ChartsService1", weburl);

这样写就好了。



但是还想再请教下,跨域到底指的是什么?
“clientaccesspolicy.xml”和“crossdomain.xml”分别有什么作用?

#13


http://blog.csdn.net/madaming/article/details/6358519

#14


#region 引用WCF public static EndpointAddress getEndpointAddress(string relative_uri) { return new EndpointAddress(new Uri(Application.Current.Host.Source, relative_uri)); } public static void use_wcf(ref wcfclient wcf_instance, string end_point_address) { EndpointAddress _end_point_address = getEndpointAddress(end_point_address); //调用wcf超时的解决办法 #if (TRACE) wcf_instance.Endpoint.Binding.OpenTimeout = new TimeSpan(0, 18, 0); wcf_instance.Endpoint.Binding.CloseTimeout = new TimeSpan(0, 18, 0); wcf_instance.Endpoint.Binding.SendTimeout = new TimeSpan(1, 18, 0); wcf_instance.Endpoint.Binding.ReceiveTimeout = new TimeSpan(1 , 18, 0); #else wcf_instance.Endpoint.Binding.OpenTimeout = new TimeSpan(0, 1, 0); wcf_instance.Endpoint.Binding.CloseTimeout = new TimeSpan(0, 1, 0); wcf_instance.Endpoint.Binding.SendTimeout = new TimeSpan(0, 5, 0); wcf_instance.Endpoint.Binding.ReceiveTimeout = new TimeSpan(0, 5, 0); #endif wcf_instance.Endpoint.Address = _end_point_address; } #endregion wcfclient my_wcf_instance=new wcfclient(); use_wcf(ref my_wcf_instance, @"../Services/myWCF.svc");
use_wcf(ref my_wcf_instance, @"../Services/myWCF.svc");
 

把你的wcf引用实例如my_wcf_instance经过方法use_wcf(ref my_wcf_instance, @"../Services/myWCF.svc")一下,你的问题可能就解决了。红色的那段代码我想你应该能看明白。

谢谢,这个方法的过程是怎样的?

这样做有什么好处???

#15


其实第一个链接地址是我先前使用的,是调试过的。第二个链接地址是我后来看到的,认为说的有点道理,比我的第一个方法更理论些,但没有调试过。

#16


两边的环境是不是不一样

#17


引用 13 楼 madaming 的回复:
http://blog.csdn.net/madaming/article/details/6358519


嗯。谢谢了。。。