Silverlight应用程序中的RIA服务错误

时间:2018-02-18 17:39:52

标签: silverlight web-config wcf-ria-services

在一个非常简单的Silverlight应用程序中,我有一个DomainService类,它有一个返回Letter对象列表的方法。

当我在VisualStudio中运行它时,应用程序正常工作。但是,当我将其发布到我的Windows 10本地计算机上的文件夹并使用IIS(版本10.0.166299.5)运行它时,我收到以下错误:

远程服务器返回错误:NotFound。 在System.ServiceModel.DomainServices.Client.OperationBase.Complete(异常错误)在System.ServiceModel.DomainServices.Client.LoadOperation.Complete(异常错误)在System.ServiceModel.DomainServices.Client.DomainContext.CompleteLoad(IAsyncResult的asyncResult)在系统.ServiceModel.DomainServices.Client.DomainContext。<> c__DisplayClass1b.b__17(Object)

我认为这是由于我的WebConfig文件中遗漏了一些错误。 我的WebConfig目前看起来像这样:

<?xml version="1.0"?>

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>

    <system.web>
      <compilation debug="true" targetFramework="4.6" />
      <httpRuntime targetFramework="4.6" />
    </system.web>




  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <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>


  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>


</configuration>

我的域名服务类的代码如下:

using System.Collections.Generic;
using System.Linq;
using System.ServiceModel.DomainServices.Hosting;
using System.ServiceModel.DomainServices.Server;
using SilverData.Web.Models;

namespace SilverData.Web.Services
{
    [EnableClientAccess]
    public class DrugsRiaService : DomainService
    {


        public IQueryable<Letter> GetAllLetters()
        {
            List<Letter> letters = new List<Letter>();

            Letter letterA = new Letter { ID = 1, Statement = "Mike" };
            Letter LetterB = new Letter { ID = 2, Statement = "Emma" };
            Letter LetterC = new Letter { ID = 3, Statement = "Peter" };

            letters.Add(letterA);
            letters.Add(LetterB);
            letters.Add(LetterC);



            return letters.AsQueryable();
        }


    }
}

2 个答案:

答案 0 :(得分:1)

错误是由于.svc文件没有得到服务的问题。问题在 Kyle Abraham专家交流的帮助下得到了解决。

https://www.experts-exchange.com/questions/29084691/RIA-Service-Error-in-a-Silverlight-Application.html

解决方案是将以下行添加到Webconfig的Web服务器部分

tb %>% mutate_at(vars(starts_with("y")), list(~ . - z))
#> # A tibble: 3 x 5
#>       x    y1    y2    y3     z
#>   <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1     1     0     2     4     2
#> 2     2    -2    -1     0     3
#> 3     3     5     3     1     1

tb %>% mutate_at(vars(starts_with("y")), list(mod = ~ . - z))
#> # A tibble: 3 x 8
#>       x    y1    y2    y3     z y1_mod y2_mod y3_mod
#>   <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>  <dbl>  <dbl>
#> 1     1     2     4     6     2      0      2      4
#> 2     2     1     2     3     3     -2     -1      0
#> 3     3     6     4     2     1      5      3      1

tb %>%
  mutate_at(vars(starts_with("y")),  list(mod = ~ . - z)) %>%
  rename_at(vars(ends_with("_mod")), list(~ paste("mod", gsub("_mod", "", .), sep = "_")))
#> # A tibble: 3 x 8
#>       x    y1    y2    y3     z mod_y1 mod_y2 mod_y3
#>   <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>  <dbl>  <dbl>
#> 1     1     2     4     6     2      0      2      4
#> 2     2     1     2     3     3     -2     -1      0
#> 3     3     6     4     2     1      5      3      1

答案 1 :(得分:0)

我不确定,这是一个猜测,因为我有一段时间没有使用RIA,但我认为字母需要返回为可查询以外的东西...尝试ToList()导致查询执行,并且有效负载完成后,从数据库中检索完整的枚举。请记住,这是来自客户端的远程调用,而不是可以扩展可查询的本地客户端。