You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Silverlight应用中RIA Service发布至IIS后出现NotFound错误

解决Silverlight DomainService部署到IIS后出现NotFound错误的方案

这种Silverlight结合DomainService部署到IIS后触发的NotFound错误我碰到过好多次,大多是部署配置或IIS设置没跟上VS调试环境的要求,咱们一步步来排查解决:

1. 检查DomainService的服务端点配置

首先确认Web项目的web.config里有没有正确配置DomainService的服务端点:

  • 确保<system.serviceModel>节点下包含DomainService的服务配置,示例如下:
    <services>
      <service name="YourProjectNamespace.YourDomainService">
        <endpoint address="" binding="webHttpBinding" contract="System.ServiceModel.DomainServices.Server.IDomainService"/>
      </service>
    </services>
    
  • 同时要保证<domainServices>端点配置存在,用于支持JSON序列化:
    <system.serviceModel>
      <domainServices>
        <endpoints>
          <add name="Json" type="System.ServiceModel.DomainServices.Hosting.JsonEndpointFactory, System.ServiceModel.DomainServices.Hosting"/>
        </endpoints>
      </domainServices>
    </system.serviceModel>
    

2. 验证IIS的MIME类型设置

Silverlight和DomainService需要特定的MIME类型支持,IIS默认可能未配置全:

  • 检查.xap文件的MIME类型是否为application/x-silverlight-app,如果没有,在IIS管理器中找到站点→右键「属性」→「MIME类型」→「添加」来配置
  • 确认.json的MIME类型为application/json,同样如果缺失就添加

3. 调整IIS应用程序池设置

  • .NET CLR版本匹配:确保应用程序池的.NET CLR版本和你的项目目标框架一致(比如项目用.NET Framework 4.7.2,就选对应的CLR版本,别选「无托管代码」)
  • 权限配置:如果你的DomainService需要访问数据库、本地文件等资源,要保证应用程序池的身份(比如ApplicationPoolIdentity)拥有足够的访问权限

4. 确认发布路径与IIS站点映射

  • 检查IIS站点的物理路径是否准确指向你发布的文件夹,确保所有文件(包括Web项目的服务文件、Silverlight的.xap包)都完整发布,没有遗漏
  • 直接在浏览器访问DomainService的服务地址(比如http://localhost/YourDomainService.svc),如果能正常显示服务说明页面,证明服务部署正常;如果返回404,那就是服务本身没部署到位

5. 启用IIS详细错误日志排查根源

有时候NotFound只是表面错误,开启详细错误能获取更具体的失败原因:

  • 打开IIS管理器→选中站点→「错误页」→「编辑功能设置」→选择「详细错误」,重新访问应用后就能看到具体的错误代码和详细描述

6. 修正Silverlight客户端的服务地址

确认Silverlight项目中ServiceReferences.ClientConfig的服务地址是否适配IIS环境:

  • 把调试时的本地地址替换为IIS站点的实际URL,示例:
    <endpoint address="http://localhost/YourDomainService.svc"
              binding="customBinding" bindingConfiguration="CustomBinding_YourDomainService"
              contract="YourDomainServiceContext.IYourDomainService" name="CustomBinding_YourDomainService"/>
    
  • 如果用相对路径,要确保在IIS环境下能正确解析到服务端点

另外补充一点:如果有跨域访问的场景(虽然本地IIS一般不会),可以在站点根目录放置clientaccesspolicy.xml或crossdomain.xml文件,配置允许的访问规则。

内容的提问来源于stack exchange,提问作者Faheem Ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:49:23