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 尺寸。


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

但是,WCF仍旧报错。

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



ContractedBlock.gifExpandedBlockStart.gifCode
<bindings> 
   
<basicHttpBinding> 
     
<binding name="BasicHttpBinding_IDataService" 
         maxBufferPoolSize
="2147483647" 
         maxReceivedMessageSize
="2147483647" 
         maxBufferSize
="2147483647"> 
       
<readerQuotas 
           
maxArrayLength="2147483647" 
           maxBytesPerRead
="2147483647" 
           maxDepth
="2147483647" 
           maxNameTableCharCount
="2147483647" 
           maxStringContentLength
="2147483647" /> 
     
</binding> 
   
</basicHttpBinding> 
</bindings>


另外,在ServiceBehaviors中添加maxItemsInObjectGraph属性

ContractedBlock.gifExpandedBlockStart.gifCode
<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文件即可。

ContractedBlock.gifExpandedBlockStart.gifCode
<?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

希望能够帮助到大家。

转载于:https://www.cnblogs.com/jv9/archive/2009/10/08/1578951.html

<think>好的,我现在要处理用户关于HTTP 404 Not Found错误的问题。首先,我需要确认用户的需求是什么。用户明确提到想查找该错误的原因及解决方案,所以我需要整理出常见原因和对应的解决方法。 接下来,我需要回顾之前提供的引用内容,看看有哪些相关信息可以整合。引用[1]和[2]都提到了Nginx的404错误,包括配置文件错误、权限问题、符号链接、文件不存在等。引用[3]是关于Conda的HTTP 404,可能涉及镜像源问题。引用[4]是IIS环境下WCF服务未正确配置导致的404.3错误。这些不同环境下的案例可以帮助用户理解不同场景下的问题。 用户的问题不特定于某个服务器,所以需要概括通用的原因和解决方法。比如,路径错误、文件不存在、服务器配置问题、权限问题、URL拼写错误、重写规则问题等。同时,还要考虑不同服务器如Nginx、Apache、IIS的差异,以及应用程序框架如WCF的特殊配置需求。 然后,我需要组织这些信息,确保结构清晰,分点列出原因和对应的解决方案。可能还需要加入检查步骤,比如查看服务器日志、验证文件路径、检查配置语法等。此外,要提醒用户注意URL的大小写、符号链接的权限,以及动态内容所需的模块是否启用。 最后,生成相关问题,帮助用户进一步排查或深入理解问题。例如,询问不同服务器下的特定解决方法,或者如何检查日志等。确保回答全面且易于理解,同时引用之前的参考资料,但注意用户可能不需要具体到每个引用,而是综合后的信息。</think>### HTTP 404 Not Found 错误原因及解决方案 HTTP 404 错误表示客户端请求的资源在服务器上未找到。以下是常见原因及对应的解决方法: --- #### **一、常见原因** 1. **路径或文件名错误** - 服务器配置中指定的文件路径与实际路径不匹配(例如 Nginx 的 `root` 或 `alias` 指令配置错误)[^1][^2]。 - 文件名大小写不一致(Linux 系统区分大小写)。 2. **文件不存在** - 请求的文件已被删除、移动或未上传到服务器。 - 静态资源未正确部署(如 `index.html` 缺失或路径错误)。 3. **服务器配置问题** - **Nginx/Apache**:`location` 块未正确定义,或 `index` 指令未指定默认页面(如缺少 `index.html`)[^2]。 - **IIS**:未启用 WCF 服务或 ASP.NET 模块(需通过“Windows 功能”启用)[^4]。 - 动态内容依赖的模块未加载(如 PHP、Python 解释器未配置)。 4. **权限问题** - Web 进程(如 `nginx` 或 `www-data` 用户)对文件或目录无读取权限。 - 符号链接(Symbolic Link)指向的目标不可访问[^1]。 5. **URL 拼写错误** - 客户端请求的 URL 包含拼写错误或多余字符(如 `/user/profile` 误写为 `/user/proflie`)。 6. **重写规则冲突** - URL 重写(如 Nginx 的 `rewrite` 规则或 Apache 的 `.htaccess`)导致路径被错误解析。 --- #### **二、通用解决方案** 1. **检查文件路径** - 验证服务器配置中的路径(如 Nginx 的 `root` 或 `alias`)与实际文件路径是否一致。 - 使用绝对路径确保准确性,例如: ```nginx location /static/ { root /var/www/html; # 文件路径为 /var/www/html/static/ } ``` 2. **验证文件存在性** - 通过命令行(如 `ls` 或 `dir`)确认文件在服务器上存在。 - 检查文件名大小写是否与请求一致。 3. **查看服务器日志** - **Nginx/Apache**:查看错误日志(默认路径如 `/var/log/nginx/error.log`)定位具体问题[^2]。 - **IIS**:通过“事件查看器”排查 WCF 服务或权限错误。 4. **修复权限问题** - 对静态文件目录授予 Web 进程读取权限: ```bash chmod 755 /var/www/html && chown -R nginx:nginx /var/www/html ``` 5. **检查服务器配置** - 确保 `index` 指令包含默认页面(如 `index.html index.php`)。 - 重启服务使配置生效: ```bash nginx -t && systemctl restart nginx # Nginx 示例 ``` 6. **排查动态内容依赖** - 对于框架(如 Flask/Django),确认路由配置正确。 - IIS 需启用 ASP.NET 或 WCF 相关模块[^4]。 --- #### **三、特殊场景处理** - **镜像源 404 错误**(如 Conda): 更换镜像源或检查 URL 是否有效(例如清华镜像源路径是否更新)[^3]。 - **符号链接问题**: 确保符号链接指向有效目标,且 Web 进程有权限访问目标文件[^1]。 - **IIS 的 404.3 错误**: 通过以下命令修复 WCF 注册问题,并在“Windows 功能”中启用相关服务[^4]: ```powershell &quot;%windir%\Microsoft.NET\Framework\v4.0.30319\ServiceModelReg.exe&quot; -r ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值