Iis 7 Silverlight 5和Ria服务故障排除[Web-services-AuthenticationService.svc不存在]

Iis 7 Silverlight 5和Ria服务故障排除[Web-services-AuthenticationService.svc不存在],iis-7,wcf-ria-services,silverlight-5.0,Iis 7,Wcf Ria Services,Silverlight 5.0,我有两个使用Ria服务的Silverlight 5项目的不同版本。两者都在当地工作。旧版本(A)在部署到ISS7时工作。新版本(B)没有。版本B的用户/密码身份验证失败,错误为: 查询“登录”的加载操作失败。远程服务器返回错误:NotFound。 在过去的一周里,我参考了各种SO和MSDN帖子,尝试了许多故障排除技术。按照建议将错误日志记录添加到web.config会导致记录以下内容: 服务“/ClientBin/MyApp Web Services AuthenticationServi

我有两个使用Ria服务的Silverlight 5项目的不同版本。两者都在当地工作。旧版本(A)在部署到ISS7时工作。新版本(B)没有。版本B的用户/密码身份验证失败,错误为:

  • 查询“登录”的加载操作失败。远程服务器返回错误:NotFound。
在过去的一周里,我参考了各种SO和MSDN帖子,尝试了许多故障排除技术。按照建议将错误日志记录添加到web.config会导致记录以下内容:

  • 服务“/ClientBin/MyApp Web Services AuthenticationService.svc”不存在。
通过研究,我们找到了一个建议创建一个名为/path的伪.svc文件的方法。结果是:

  • 由于编译期间出现异常,无法激活服务“/ClientBin/DBCRM Web Services AuthenticationService.svc”。异常消息是:“.svc”文件中缺少“ServiceHost”指令的结束括号..
上述错误的详细信息在很大程度上并不重要,因为我提供的是一个空白的.svc文件。这仅仅是为了证实这一事实,即该项目确实依赖于它

这是踢球的人。。。工作版本也不包含此文件,但不会引发异常

在这两种解决方案中,搜索任何关于需要该服务的引用都意外地找到了一个结果。两个
MyApp.Web.g.cs
文件都是相同的(运行CSDiff),并且都包含以下行:

  • public AuthenticationContext():
    这是(新的WebDomainClient(新的Uri(“DBCRM Web Services AuthenticationService.svc”,UriKind.Relative)))
    {
    }
两者都具有相同的包/部署设置。我正在部署到文件系统,然后将文件复制到主机服务器上的IIS

问题:

  • 何处是使此.svc文件成为要求的设置?在版本A中显然不需要它,但在版本B中需要它。同样,文件
    MyApp.Web.g.cs
    是对它的唯一引用,并且它在两个版本中都存在

  • MyApp.Web.g.cs
    是一个生成的文件。Visual Studio 2010中的哪个服务创建此文件?另外,我是否可以将其修改为不包含对所讨论的
    .svc
    文件的调用


  • 我将开始合并这两个解决方案,看看在哪一点上需要.svc文件。在此期间如有任何想法,将不胜感激

    WCF Ria服务注册一个HttpModule以管理WCF Ria服务调用。当请求到达服务器时,该模块读取url并了解要实例化的服务和要调用的方法。因此,找不到任何.svc文件是绝对正常的
    不要搞乱.g.C.你的问题不在这里。
    查看一下web.config文件,您会发现如下行

    <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>
    ...
    </system.web>
    
    
    ...
    
    还有这个

        <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>
    ...
    </system.webServer>
    
    
    ...
    
    除了如上所述确保Web.Config中存在“DomainServiceModule”条目外,RIA还需要启用ASP.NET兼容模式。以下是指向Microsoft RIA部署指南的链接:

    在“配置Web服务器”部分的第三段中,它指出您需要在Web.Config文件中包含以下内容:

    ... ...


    如果缺少此选项,您将获得问题中描述的行为。

    在执行任何操作之前,请确保实际部署了包含实际代码的常规
    bin
    文件夹


    我使用MSDEPLOY部署到一个新服务器,但它没有部署bin文件夹。没有这个你哪儿都去不了

    感谢您的回复,但是我不确定这有多大帮助?工作版本和非工作版本在各自的web.config中都有这些精确的行。你是否认为非工作版本缺少它们?BryanMy的观点是不要弄乱client或file.svc。如果DomainServiceModule注册没有问题,那么您的问题可能存在于检索方法(可能是db错误?)中的DomainService安装(查看您的构造函数)上,甚至存在于序列化中。再看看另一个问题:我想我会开始在项目的其他地方寻找不一致的地方。我以前见过这个问题,有几个类似的问题通常没有解决,因此我决定做这个新的。这个问题所暗示的只是错误跟踪,我已经提到我正在做的事情。如果你还有其他想法,请告诉我!bryan如果可以使用调试器,请附加调试器,并确保选择在托管和非托管异常上中断。另外,重写domainservice上的OnError,如果错误发生在domainservice内部,则调用此方法。我知道这有点傻,但我用RIA 404解决了大部分问题