【问题标题】:WCF RIA Silverlight deployment issuesWCF RIA Silverlight 部署问题
【发布时间】:2010-01-07 00:07:21
【问题描述】:

似乎世界上到处都是在部署 RIA WCF 服务时遇到问题的人,现在我也是。我已经尝试了很多东西,但无济于事。我需要 WCF RIA 来支持我构建的 Silverlight 3 应用程序。

简短的故事是,使用新的 WCF RIA 服务(11 月 9 日?)我打开 VS 2008,创建新项目(silverlight 应用程序),启用“.NET RIA 服务”。将新项目添加到 Web 项目 - Linq2SQL dbml 文件(来自之前准备的 SQL 2005 DB)并编译。我在 web 项目中添加了一个新项目 - 域服务(链接我需要的表)并编译。使用域上下文,我在 MainPage 中使用标准 RIA get 查询“加载”数据,并添加一个 TextBlock 以显示返回的数据。构建并运行(卡西尼) - 成功。使用 VS 发布到本地 PC 上的 IIS - 成功。

使用 VS 发布到测试服务器 (IIS6) - 浏览到位置并加载 Silverlight 应用程序,但 Fiddler 告诉我我在所有 WCF .svc 请求上都有 404。使用 Fiddler 在服务请求上“启动 IE”,这是真的 - 404。

我已经运行了 aspnet_regiis、ServiceModelReg 并为 .xap、.xaml、.xbap 和 .svc 添加了 mime 类型。我已将 System.Web.Ria 和 System.Web.DomainServices DLL 包含在本地副本中。

我需要任何帮助

a) 解决方案

b) 寻找解决方案的方法

【问题讨论】:

    标签: wcf silverlight deployment ria


    【解决方案1】:

    我也遇到了一些麻烦,尽管一旦我弄清楚它们就相对简单了。

    首先,遍历http://timheuer.com/blog/archive/2009/12/10/tips-to-deploy-ria-services-troubleshoot.aspx(尽管您似乎已经掩盖了大部分内容)。

    检查您的 DomainServiceModule 在 web.config 中的新 system.webServer 位和 IIS6 的旧位:

        <httpModules>
       <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
       <add name="DomainServiceModule" type="System.Web.Ria.Services.DomainServiceHttpModule, System.Web.Ria, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </httpModules>
    

    最后,我必须手动创建我的服务,方法是创建 .svc 文件,SL 正在寻找它们(来自 fiddler)并填写它们:

    <%@ ServiceHost Service="NameOfSerice" Factory="System.Web.Ria.DomainServiceHostFactoryEx" %>
    

    确保您还直接访问 .svc 文件(最后没有 /binary),因为您可能会在那里遇到一些不错的错误(当然,一旦您解决了 404 问题!)

    HTH,

    约旦。

    【讨论】:

    • 感谢您的建议。我已经通过 Heuer 的建议,虽然我从来不明白如何制作一个实际的 .SVC 文件,所以谢谢你。 Fiddler 告诉我它正在寻找 /PatientBoard/ClientBin/PatientJourneyWeb-PJService.svc/binary - 所以我应该制作一个名为 PatientJourneyWeb-PJService.svc 的文件并将您概述的文本放在那里?我应该在 Service="NameOfSerice" 中替换“PatientJourneyWeb-PJService”吗?
    • 首先,尝试转到 /PatientBoard/ClientBin/PatientJourneyWeb-PJService.svc 看看你得到了什么......它可能试图将你重定向到登录页面?如果是这样,则确保将 IIS 设置为 anon + forms auth,而不是 windows auth ...如果这没有帮助,则在该位置创建服务,该位置恰好称为(无二进制)并将服务主机指向您的域服务。
    • 感谢您的帮助。直接打开服务时得到 404,添加 svc 文件现在得到 500:“找不到类型 'PatientJourneyWeb.PJService',作为 ServiceHost 指令中的服务属性值提供。”
    • 现在一切都好...事实证明我并没有在本地复制所有必需的 DLL。我通过启用 Fusion 日志记录(在此处描述 - thejoyofcode.com/…)发现了这一点。就我而言,我需要“复制本地”4 个 DLL:System.ComponentModel.DataAnnotations System.Web.DomainServices System.Web.DomainServices.LinqToSql System.Web.Ria(第一个在 Tim Heuer 的博客中没有详细说明)
    【解决方案2】:

    我自己在找不到 .svc 文件的情况下解决了这个问题。我很快意识到这不仅仅是我的 .svc,而是所有 .svc 文件。然后它似乎是一个 IIS6 问题。事实证明,ASP.NET v4.0x Web 服务扩展默认设置为“禁止”。进入 Web 服务扩展配置并将 ASP.NET v4.0x 设置为“允许”,一切都很好。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。在 Windows 7 下使用 cassini 服务器运行良好。使用 IIS7 部署到 Windows Server 2008 R2,但无法正常工作。 Fiddler 报告正在引发“EndPointNotFoundException”。

      由于我完全控制了服务器,因此我的解决方案是安装 Visual Studio 2008 Express、Silverlight 3 SDK 和 VS2008 的 WCF RIA Services Beta。这意味着 GAC 中已经安装了必要的 DLL。我认为这不会影响结果,但我为 Web 应用程序引用的 RIA DLL 关闭了“复制本地”。

      可能是一个非正统的解决方案,但它对我有用!!!实际上,我是在 Microsoft Support 的建议下这样做的。

      顺便说一句,目前通过 Microsoft 对此的支持非常稀少。他们实际上现在正在内部试图弄清楚谁将支持这项技术:WCF 团队或 Silverlight 团队。我知道它仍处于测试阶段,但请注意,“GoLive”许可证并不意味着它的完全支持。我有来自 WCF 团队的人在这方面竭尽全力帮助我,但在电话会议期间多次给了我免责声明,说这些渠道还没有真正得到支持。

      【讨论】:

        【解决方案4】:

        如果有人有兴趣,如何使用自己的批处理脚本将完整的 Silverlight 解决方案部署到 IIS,请阅读我在这篇文章中的回答:

        Is there a Management Service (WMSVC) UI in IIS 7 on Windows 7?

        我这样做了,因为没有办法,VS 2010 的内置 webdeploy 功能正在工作。批处理脚本使您可以在 IIS 上运行和调试

        我知道,这不是这个问题的明确答案,但这是一个非常相似的问题。

        【讨论】:

          【解决方案5】:

          如果您按照here 的描述扩展了工厂,我认为您只会使用 FactoryEx。另外,根据我的帮助文件,全名是System.Web.Ria.Services.DomainServiceHostFactory,但解析器也无法创建该类型,虽然我在GAC中有System.Web.Ria。

          我同意 - 通过 https 部署 WCF RIA 是一项挑战 - 我还没有让它工作。

          【讨论】:

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