2010-01-07 112 views
4

看起来世界充斥着人们在部署RIA WCF服务时遇到问题,现在我也是如此。我已经尝试了一堆东西,但无济于事。我需要WCF RIA来支持我构建的Silverlight 3应用程序。使用新的WCF RIA服务(11月09日?)我打开VS 2008,创建新的项目(silverlight应用程序),启用“.NET RIA服务”。将新项目添加到Web项目 - Linq2SQL dbml文件(从前面编写的SQL 2005 DB)并编译。我将一个新项目添加到Web项目 - 域服务(链接我需要的表)并编译。使用域上下文我在MainPage中使用标准RIA get查询“加载”数据并添加一个TextBlock来显示返回的数据。建立&奔跑(cassini) - 成功。使用VS发布到本地PC上的IIS - 成功。WCF RIA Silverlight部署问题

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

我已经为.xap,.xaml,.xbap和.svc运行了aspnet_regiis,ServiceModelReg并添加了mime类型。我已经包含了System.Web.Ria和System.Web.DomainServices DLL以及copy local true。

我需要帮助或者

一)溶液

B),以找到一个解决方案

回答

3

我遇到了一些麻烦与这也是一个办法,但一旦我出来是比较直前锋。

首先,运行http://timheuer.com/blog/archive/2009/12/10/tips-to-deploy-ria-services-troubleshoot.aspx(尽管看起来你已经覆盖了大部分)。

检查你有你的DomainServiceModule在新system.webServer位在web.config和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

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

请确保您还行直接.svc文件(没有在年底/二进制),你可以得到一些不错的:其中SL正在寻找他们(从小提琴手),并与他们填充文件错误(当然,一旦你解决你的404当​​然!)

HTH,

约旦。

+0

感谢您的建议。我已经通过豪雅的建议,尽管我从来没有理解如何制作实际的.SVC文件,所以非常感谢。 Fiddler告诉我它正在寻找/PatientBoard/ClientBin/PatientJourneyWeb-PJService.svc/binary - 所以我应该创建一个名为PatientJourneyWeb-PJService.svc的文件,并将你在那里列出的文本放在那里?在Service =“NameOfSerice”中替换“PatientJourneyWeb-PJService”? – Handleman 2010-01-07 00:39:24

+0

首先,尝试去/PatientBoard/ClientBin/PatientJourneyWeb-PJService.svc,看看你得到了什么......它可能试图将你重定向到一个登录页面?如果是这样,那么请确保IIS设置为匿名+表单验证,而不是Windows验证... 如果这有助于解决问题,那么请在该位置创建名为(无二进制)的服务,并将服务主机指向您的域服务。 – Jordan 2010-01-07 09:59:48

+0

感谢您的帮助。我直接打开服务时得到了404,现在增加了svc文件,我得到了500:“无法找到作为ServiceHost指令中Service属性值提供的类型'PatientJourneyWeb.PJService'。” – Handleman 2010-01-11 01:45:09

-1

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

我同意 - 通过https部署WCF RIA是一个挑战 - 我还没有得到它的工作。

0

我遇到了同样的问题。在Windows 7下使用cassini服务器正常工作。使用IIS7部署到Windows Server 2008 R2,并且不起作用。 Fiddler报告说正在抛出'EndPointNotFoundException'。

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

可能是一个非正统的解决方案,但它为我工作!其实,我是在微软支持的建议下这样做的。

顺便说一句,此时通过微软支持这个很少。他们实际上正试图在内部解决谁会支持这项技术:WCF团队或Silverlight团队。我知道它仍处于测试阶段,但要警告说'GoLive'许可证并不意味着它完全支持。我邀请了来自WCF团队的人帮助我解决问题,但在电话会议期间多次提供免责声明,但尚未通过这些渠道真正支持。

1

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

0

如果有人有兴趣,如何部署一个完整的Silverlight解决方案与自己的批处理脚本IIS,看我的答案在这个帖子:

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

我这样做,因为没有办法, VS 2010的in-bulit webdeploy功能正在运行。该批处理脚本使之成为可能,您可以在IIS上运行和调试

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