none
WCF RIA Services 部署问题 RRS feed

  • 问题

  • 我在使用ADO.NET Entity Data Model生成 * .edmx,然后利用Domain Service 生成服务。在Silverlight中调用服务中的方法。以上过程在VS2010中一切正常,当我想将程序部署在IIS6的时候,程序可以跑起来,但是怎么也没办法获得Sql server数据。总是提示“远程服务器返回了错误: NotFound。”;

    1:跨越xml已经添加在跟目录;

    2:系统所使用的dll均已拷贝纸Bin目录下;

    3:利用动态svc地址访问http://localhost:8000/wcf/services/sl_WcfRia-web-hwDomainContext.svc无法获得服务页面,在VS2010运行环境范围时可以访问;

    各位朋友,可否知道服务器上那里设置出现了问题,到时svc服务在IIS上无法访问的原因。等待大家的帮助,谢谢!

    运行环境情况:

    1:开发环境和服务器是一台机器(系统:2003 Server;数据库:2005 Sql Server;IIS:6.0)

    2:Web.Config 文件如下

    <?xml version="1.0" encoding="utf-8"?>
    <!--
      For more information on how to configure your ASP.NET application, please visit
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
    <configuration>
      <customErrors mode="On"/>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true">
          <add name="DomainServiceModule" preCondition="managedHandler" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        </modules>
        <validation validateIntegratedModeConfiguration="false" />
      </system.webServer>
      <system.web>
        <httpModules>
          <add name="DomainServiceModule" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        </httpModules>
        <compilation debug="true" targetFramework="4.0"/>
      </system.web>
      <system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
          multipleSiteBindingsEnabled="true" />
        <bindings>
         <basicHttpBinding>
            <binding name="fooSoap" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
              <security mode="Transport" />
            </binding> 
          </basicHttpBinding>
        </bindings>
        <behaviors>
          <serviceBehaviors>
            <behavior>
              <dataContractSerializer maxItemsInObjectGraph="2147483647" />
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
    </configuration>

    • 已编辑 Qian C.Ming 2010年5月30日 5:11 添加web.config
    2010年5月30日 5:09

答案

  • 2003 + IIS6默认wcf是没有被enabled.

    试试这两个命令:

  • run "c:\windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -i"
  • run "c:\windows\Microsoft.NET\Framework\v4.0.30319\ServiceModelReg.exe -i"

    Go to IIS Manager, in the Web Site Properties, under Home Directory/Configuration, could you check if extension .svc is mapped to aspnet_isapi.dll?

2010年5月31日 4:24

全部回复

  • Hi~

    Here is the solution:

    Uncheck Enable Integrated Windows Authentication and check the Allow Anonymous Access option in the settings of a virtual folder on IIS6 Management Studio;

    Good luck!


    Please remember to mark the replies as answers if they help or unmark them if they provide no help.
    2010年5月30日 5:35
  • 谢谢JueHui的回复!

    我已经将IIS 默认网站以及虚拟目录属性->目录安全性->身份验证和访问控制->勾选“启用匿名访问”,取消勾选“集成Windows身份验证” 。

    但是问题依旧,错误说明依然为“远程服务器返回了错误: NotFound。”;

    并且,我将web.Config 文件中增加了<authentication mode="Forms" />,还是无法获取数据。

    各位朋友能帮忙我给予一个可能的解决办法。等待你们的回复,谢谢!

     

    2010年5月30日 11:01
  • 你好,尝试一下将 web application的

    system.servicemodel.domainservices.entityframework

    system.servicemodel.domainservices.hosting

    system.servicemodel.domainservices.server

    的copy local = true。

    2010年5月30日 15:53
  • nanablast,你好!

    提问者已经描述了“系统所使用的dll均已拷贝纸Bin目录下”。嘻嘻,同样感谢你哦。


    Please remember to mark the replies as answers if they help or unmark them if they provide no help.
    2010年5月30日 23:02
  • 是的,dll已经全部拷贝了。

    非常感谢两位的回复。可惜问题依旧没有能够解决,可否有其他注意事项本人未考虑周全的,望各位朋友给予帮助。谢谢!

    2010年5月31日 2:39
  • test test error X209
    2010年5月31日 3:18
  • 2003 + IIS6默认wcf是没有被enabled.

    试试这两个命令:

  • run "c:\windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -i"
  • run "c:\windows\Microsoft.NET\Framework\v4.0.30319\ServiceModelReg.exe -i"

    Go to IIS Manager, in the Web Site Properties, under Home Directory/Configuration, could you check if extension .svc is mapped to aspnet_isapi.dll?

2010年5月31日 4:24
  • 估计是IIS重写URL机制导致的,升级到IIS7应该能解决你的问题。
    2010年6月18日 7:25
  • 我们现在又这样一个问题:

    我们用了silverlight4 + ria service + win 2003 + iis6 部署后页面可以打开但是登陆时也就是连接数据库时出现下列错误信息:

    Load operation failed for query 'GetPerson'. 远程服务器返回了错误: NotFound。

       位于 System.ServiceModel.DomainServices.Client.OperationBase.Complete(Exception error)
       位于 System.ServiceModel.DomainServices.Client.LoadOperation.Complete(Exception error)
       位于 System.ServiceModel.DomainServices.Client.DomainContext.CompleteLoad(IAsyncResult asyncResult)
       位于 System.ServiceModel.DomainServices.Client.DomainContext.<>c__DisplayClass1b.<Load>b__17(Object )

     

    请问可以解决吗?可以给个部署文件嘛?

    2010年6月22日 9:05
  •  标记下!

    2010年7月19日 4:11
  •  最佳答案:
        1:安装IIS
    2:安装frmwork4.0
    3:安装Silverlight_4_Toolkit_April_2010.msi
    4:建创网站的虚拟目录
    5:从开发机拷备System.ServiceModel.DomainServices.Hosting和System.ServiceModel.DomainServices.Server到生产机的C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL这个目录
    6:拷备clientaccesspolicy.xml文件到wwwroot目录
    7:从开发机拷备拷备System.ServiceModel.DomainServices.Hosting.OData和System.ServiceModel.DomainServices.EntityFramework到生产机 C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL这个目录
    8:配置IIS
       (1):wev服务扩展->允许asp.netv4.0
       (2):网站属性->文档->添加默认文档(如:Investoday.Yankee.ThirdPartyTestPage.aspx)
       (3):网站属性->目录安全性->把身份验证只设置成启用匿名方部,去掉集成windows身份验证
       (4):网站属性->Asp.net->选择Version版本为4.0
       (5):网站属性->Http头->点击MIME类型->添加.xaml:application/xaml+xml和.xap:application/x-silverlight-app的映射
       (6):重启IIS->运行命令:iisreset


    经过上述步聚,部署就可以成功(操作系统:windows 2003 sp2)

    有为:448114915如果不明白,可以加我QQ问

     


    沙漠之狐
    2010年12月17日 5:32
  • 最后搞定了吗? 我也是同样的问题,急啊,部署在IIs7上也不行。
    2011年2月18日 3:22