zoukankan      html  css  js  c++  java
  • Silverlight + WCF错误“The remote server returned an error: NotFound.”的解决方法

    今天在项目中发送数据包到服务器端,WCF返回错误信息:The remote server returned an error: NotFound. 经过排查,通过以下步骤进行了解决。

    Silverlight企业级项目中,经常要发送大量数据包到服务器端,而WCF服务本身对数据包进行了限制,最大不能超过65535,而我在项目中尝试发送XML大数据包到服务器端,WCF返回以上错误。

    起初考试在客户端尝试重新定义BasicHttpBinding对象

    1 Dim binding As BasicHttpBinding = New BasicHttpBinding()
    2 
    3 binding.MaxBufferSize = 2147483647 
    4 binding.MaxReceivedMessageSize = 2147483647
    5 

    然后考虑修改ServiceReferences.ClientConfig文件,增加Buffer 尺寸。



    <bindings> 
          
    <basicHttpBinding> 
                    
    <binding name="BasicHttpBinding_IDataService" 
                             maxBufferSize
    ="2147483647" 
                             maxReceivedMessageSize
    ="2147483647"> 
                        
    <security mode="None" /> 
                    
    </binding> 
           
    </basicHttpBinding> 
    </bindings>

    但是,WCF仍旧报错。

    最后,尝试修改服务器端,在Web.config中添加自定义BasicHttpBinding对象,



    Code


    另外,在ServiceBehaviors中添加maxItemsInObjectGraph属性


    <behaviors> 
    <serviceBehaviors> 
      
    <behavior name="TeacherLogic.Net.Web.DataServiceBehavior"> 
       
    <serviceMetadata httpGetEnabled="true" /> 
       
    <serviceDebug includeExceptionDetailInFaults="true" /> 
       
    <dataContractSerializer maxItemsInObjectGraph="2147483647"/> 
      
    </behavior> 
    </serviceBehaviors> 
    </behaviors>

    添加自定义Binding对象后,在endpoint中引用,就解决了“NotFound”问题了。

    <endpoint address="" binding="basicHttpBinding" contract="Myproject.IDataService" bindingConfiguration="BasicHttpBinding_IDataService"/>

    在Silverlight官方论坛还有一种说法,因为404 Notfound错误的,还可能因为跨域问题,这个问题比较容易解决,只要在网站根目录下建立一个clientaccesspolicy.xml文件即可。


    <?xml version="1.0" encoding="utf-8" ?>
    <access-policy>
      
    <cross-domain-access>
        
    <policy>
          
    <allow-from http-request-headers="*">
            
    <domain uri="http://*"/>
          
    </allow-from>
          
    <grant-to>
            
    <resource path="/" include-subpaths="true"/>
          
    </grant-to>
        
    </policy>
      
    </cross-domain-access>
    </access-policy

    希望能够帮助到大家。

  • 相关阅读:
    android&php 加密解密
    AES加解密算法在Android中的应用及Android4.2以上版本调用问题
    eclipse 中 import sun.misc.BASE64Decoder; 报错
    Java加密技术(一)——加密介绍
    android加密DESede/CBC/PKCS5Padding
    Android中的Audio播放:竞争Audio之Audio Focus的应用
    java.lang.IllegalStateException: attempt to re-open an already-closed object
    Android 性能优化的一些方法
    android.os.DeadObjectException memory near r0: 异常处理 Consumer closed input channel or an error occurred. events=0x9
    如何分析解决Android ANR
  • 原文地址:https://www.cnblogs.com/jv9/p/1578951.html
Copyright © 2011-2022 走看看