【问题标题】:WCF RIA Service deployment issueWCF RIA 服务部署问题
【发布时间】:2009-12-08 20:35:49
【问题描述】:

我有一个非常简单的示例 silverlight 应用程序。我使用具有一个实体的实体模型向它添加了域服务。客户端应用程序只是在启动时加载实体中的所有行。当我在我的开发箱上运行它时,它按预期工作。但是,当我将它移动到我们的测试服务器时,我收到一个异常,提示找不到我正在调用的方法(查询“GetCTCStation”的加载操作失败。远程服务器返回错误。NotFound。)。当我与 Fiddler 更密切地检查客户端/服务器通信时,我发现请求将发送到 http://[server url]/ClientBin/SilverlightApplication7-Client-Web-CTCService.svc/binary。 我将域服务添加到web项目的根目录,所以我不明白为什么客户端在ClientBin目录中寻找它。它显然不存在。我在这里做错了什么?我在使用 7 月预览版的 RIA 时从来没有遇到过任何问题。


它是相对的,但它会在 Generated_Code 文件中自动处理。并且 webconfig 中没有要配置的内容。我在创建域服务时使用了默认设置。我尝试在实例化服务时显式设置 uri,但发生了同样的异常。

【问题讨论】:

    标签: wcf silverlight wcf-ria-services ria


    【解决方案1】:

    经过长时间的斗争并尝试了许多不同的选择,我终于找到了解决方案。这个帖子是key

    基本上,在发布项目时,bin 文件夹中没有包含一些 dll。确保在参考下正确设置了以下 dll(确保 System.ComponentModel.DataAnnotations 指向 C:\Program Files\Microsoft SDKs\RIA Services\v1.0\Libraries\Server\System.ComponentModel. DataAnnotations.dll):

    System.ComponentModel.DataAnnotations 和每个以 System.Web 开头的 dll 都需要将“Copy Local”设置为 true。

    构建项目并再次发布。这解决了我的问题。

    我要感谢为解决此问题(在此线程和其他线程中)做出贡献的所有人。

    【讨论】:

    • 此 SDK 中不再存在 System.ComponentModel.DataAnnotations.dll 文件。我们应该否决这个答案吗?
    • 我在 Silverlight 5 和 Ria Services 1.0 SP2 上,这个答案仍然有效。事实上,请@Dragan 或任何可以将其标记为答案的人。
    【解决方案2】:

    如果您检查该服务请求上的错误(这在您看来是正常的),Fiddler 中的内容说明了什么? NotFound 是插件中的基因,但 fiddler 可能会在响应正文中向您显示 HTTP 500 或具有更多详细信息的内容。

    【讨论】:

    • 在我的情况下,我收到 401 错误。在所有需要的文件上尝试了复制本地选项,但仍然没有运气......有什么提示吗?
    【解决方案3】:

    1) 你在什么 IIS 上部署?如果 Hotfix

    2) 包括所有 RIA 程序集(设置复制本地 => True)包括:

    System.Web.Ria

    System.Web.DomainServices.(其中有 4 个,取决于您使用的是什么)

    3) 这可能是因为您的 ASPNET 应用程序中的节点设置为 Windows,但您的站点在 IIS 中设置为匿名。大多数情况下,只需将节点更改为 mode=”Forms” 即可消除此错误并允许您继续。对于其他人,如果您的 IIS 配置设置为同时使用集成身份验证和匿名,您需要在 IIS 管理控制台中的站点的目录安全设置中取消选中其中一个。

    【讨论】:

      【解决方案4】:

      Microsoft 在MSDN 上建议在服务器上安装 Ria 服务。

      建议在 Web 服务器上安装 RIA 服务 它将托管您的应用程序。

      这里有一个技巧,可能大多数人都会回避这个解决方案。默认情况下,安装会列出一些您通常不想在服务器上安装的先决条件。

      先决条件检查

      缺少以下必需组件:

      • Microsoft Visual Studio 2010 或更新版本或 Visual Web Developer 2010
      • Express Microsoft Silverlight 4 Developer Runtime 或更新的 Microsoft
      • Silverlight 4 SDK 或 Microsoft Silverlight 5 SDK

      使用命令行参数SERVER=TRUE 运行installation 将绕过此检查。

      msiexec /i RiaServices.msi SERVER=TRUE

      我还建议您使用此解决方案,因为它不需要为一组特定的 dll 进行特殊配置,这些 dll 可能在未来的版本中发生变化。此外,由于不会包含这些文件,因此发布过程会稍微快一些。

      还请注意,您可以使用Web Platform Installer 在服务器上安装 Ria 服务,使用 'WCF RIA Services Server install for .Net Framework 4.0',其效果与@987654325 相同@ 转变。不幸的是,这只是版本 1,缺少服务包 2。

      【讨论】:

        【解决方案5】:

        在我的情况下,解决方案是将网站引用文件夹中以下程序集的“复制本地”属性设置为“真”:

        System.ComponentModel.DataAnnotations  
        System.ServiceModel.DomainServices.EntityFramework  
        System.ServiceModel.DomainServices.Hosting  
        System.ServiceModel.DomainServices.Hosting.OData  
        System.ServiceModel.DomainServices.Server  
        System.Web.ApplicationServices  
        System.Web  
        System.Web.Extensions  
        System.Web.Mobile  
        System.Web.Services
        

        如果下次重建后一切正常,这些程序集将被复制到项目的 bin 文件夹中。

        我没有执行的任何方便的 IIS 7 配置有什么好处。

        【讨论】:

          【解决方案6】:

          也遇到了这个问题(RIA 返回“未找到”),但在我的情况下,它最终是我的查询返回的行数超过了 maxitemsinobjectgraph 允许的行数。我的临时解决方案是添加 .Take(5000) 以减少结果集,但永久解决方案需要扩展 maxitemsinobjectgraph,如下所述。希望这对其他人有所帮助...

          <behaviors>    
           <behavior name="MyServiceBehavior">        
            <dataContractSerializer maxItemsInObjectGraph="3" />    
           </behavior>
          </behaviors>
          

          请记住,默认值为 Int32.MaxValue 或 2,147,483,647

          MSDN - maxItemsInObjectGraph

          MSDN - Int32.MaxValue

          【讨论】:

            【解决方案7】:

            您是否检查了绑定配置的地址部分?看起来它使用的是相对地址。

            【讨论】:

              【解决方案8】:

              对我来说,是身份验证在 IIS 中未设置为“匿名”。 我使用 Fiddler 获取生成的 RIA SCV URL,然后在浏览器中打开该 URL。消息非常明确。

              我只需要允许匿名访问,重新启动应用程序池,一切都按预期工作。

              【讨论】:

                【解决方案9】:

                WCF RIA Services VS 2008 部署错误

                网上有很多不错的帖子,最好的帖子似乎是here(感谢蒂姆)

                虽然我发现的所有帖子在某些方面都很有用,但我的最终解决方案是不适当的数据库连接字符串。虽然 VS 生成的 DB 字符串在 VS 中运行良好,但我无法将它部署到我的 QA 服务器,直到我将它修剪成这样:

                add name="myEntities" connectionString="metadata=res://*/ReviewsModel.csdl|res://*/ReviewsModel.ssdl|res://*/ReviewsModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=dataSource;Initial Catalog=intitalCatalog;User ID=userID;Password=password;&quot;" providerName="System.Data.EntityClient" 
                

                【讨论】:

                  【解决方案10】:

                  WCF RIA 服务 VS 2008 部署错误 Here 是您正在搜索的解决方案下载示例并检查您的自助 WCF RIA (Vs2008) 服务。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-11-08
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多