0

假设我有一个 WebGet 方法:

[WebGet]
public IQueryable<State> GetStatesStartingWithLetter(string letter)
{
     return CurrentDataSource.States.Where(s => s.Name.Substring(0, 1).Equals(letter.Substring(0, 1),
            StringComparison.InvariantCultureIgnoreCase)).OrderBy(s => s.Name);
}

我可以像这样在浏览器中使用它:

http://localhost:55576/WcfDataService.svc/GetStatesStartingWithLetter?letter='a'

但是,我必须在 MVC3 控制器中做什么才能调用该方法?我已经添加了服务引用,我可以毫无问题地使用上下文。下面的代码在 /Controller/States URL 处向屏幕显示状态列表。

public ActionResult States()
{
    MyDbContext ctx = new MyDbContext(new Uri("http://localhost:55576/WcfDataService.svc/"));

    var temp = from state in ctx.States
               select state;

    return View(temp);
}

我没有看到任何简单的方法来调用 WebGet 方法,它没有像我期望的那样暴露在服务上。我错过了什么吗?我可以通过这样做得到结果:

public ActionResult States()
{
    WhelenDbContext ctx = new WhelenDbContext(new Uri("http://localhost:55576/WcfDataService.svc/"));

    var temp = ctx.Execute<State>(new Uri("http://localhost:55576/WcfDataService.svc/GetStatesStartingWithLetter?letter='a'"));

    return View(temp);
}

..但这似乎有点荒谬。任何建议都非常感谢。

4

1 回答 1

0

“添加服务引用”功能无法识别服务操作(即,在服务上使用 [WebGet] 声明的方法)。您可以使用ctx.Execute<T>()(就像您一样)或ctx.CreateQuery<T>(),但我认为您希望的强类型解决方案都不是。

有关详细信息,请参阅此页面

于 2013-01-26T21:31:00.777 回答