zoukankan      html  css  js  c++  java
  • 转:WCF跨域 这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略,或策略不适用于 SOAP

    尝试向 URI“http://localhost:8001/AccountService.svc”发出请求时出错。这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略,或策略不适用于 SOAP 服务。您可能需要与该服务的所有者联系,以发布跨域策略文件并确保该文件允许发送 SOAP 相关的 HTTP 标头。出现此错误也可能是由于使用的是 Web 服务代理中的内部类型而没有使用 InternalsVisibleToAttribute 属性。有关详细信息,请参阅内部异常。

    解决方法:

      一、在WCF项目根目录下添加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>

    二、在silverlight项目中添加一个中介类ServerManager.cs


    public class ServerManager
         {
            
    private static ServiceWcfClient servicePicture = new ServiceWcfClient();

            
    internal static ServiceWcfClient GetPox()
             {
                
    if (servicePicture.State == System.ServiceModel.CommunicationState.Created)
                 {
                     servicePicture.Endpoint.Address
    = new System.ServiceModel.EndpointAddress("http://localhost:52207/ServiceWcf.svc");
                    
    return servicePicture;
                 }
                
    else
                 {
                    
    return servicePicture;
                 }
             }
         }

    三、实例化实体类的时候一般是这样:ServiceWcfClient clientWcf = new ServiceWcfClient();

    换成:ServiceWcfClient clientWcf = ServerManager.GetPox();

    注:方法一就OK了,经过测试。

    SilverLight跨域访问及其常用的几种解决方法

  • 相关阅读:
    lambda关键字
    11.4 传递函数:
    装饰器
    maven如何将本地jar安装到本地仓库
    揭秘:日赚千元的冷门暴利项目,这个产品99%的人不知道
    参数组
    你不知道的事:AWR 基线和 AWR Compare Period Report 功能介绍
    python 关键字和位置参数
    IDL 数组相关函数
    IDL 数组相关函数
  • 原文地址:https://www.cnblogs.com/suzh/p/2076445.html
Copyright © 2011-2022 走看看