WCF - 无法解析[WebGet]符号 - 我做错了什么?

时间:2009-06-24 17:41:33

标签: c# wcf

我正在开发一个REST WCF项目,当我实现以下代码时,它抱怨它无法解析WebGet类?我错过了什么?

我尝试导入System.ServiceModel.Web命名空间,但即使我引用它也无法找到它。 System.ServiceModel.Web中的“Web”在我在代码顶部的using语句中注册时不会注册。

基本上,我需要什么来实现WebGet,WebInvoke,UriTemplate等WCF REST概念?

UPDATE:经过一些反馈并考虑了一下我所做的更多,似乎DLL(System.ServiceModel& System.ServiceModel.Web)没有出现当我去添加项目引用时,通过“添加引用”窗口。当我第一次启动项目时,仅供参考,因为这些程序集最初没有出现,我去“搜索”它们,并将它们复制到临时文件夹中,以便我可以引用它们,因此,我想我有解决问题。所以,现在我就在这一点上,我怎样才能让我的VS识别/注册这些WCF REST DLL?谢谢!

更新:我相信我对所有内容都进行了更新:在VS 2008 SP1上开发 - 我尝试下载最新的SP,下载REST预览2入门套件,针对3.5 Framework进行开发,尝试创建一个WCF REST层,最终由Silverlight 2客户端使用。

这就是我所拥有的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using UtilityClasses;
using Microsoft.ServiceModel.Web;
using Microsoft.Http;

namespace WcfRestService
{
    [ServiceContract]
    public interface IRestService
    {
        [OperationContract(Name = "Add")]
        [WebGet(UriTemplate = "/")]   // ** can't compile here **
        int Add();
    }

}

任何建议都会非常感激。

8 个答案:

答案 0 :(得分:30)

您需要引用System.ServiceModel.Web DLL。

右键单击项目中的“References”文件夹,然后选择“Add Reference ...”。向下滚动到System.ServiceModel.Web并单击“确定”。

答案 1 :(得分:26)

只需一想,您可能会将您的项目定位到.Net客户端配置文件,该配置文件会公开有限的命名空间。您可能需要检查项目属性中的目标框架设置。

我遇到过一个WCF项目没找到System.ServiceModel.Web,直到我改变了默认的框架设置。

HTH

答案 2 :(得分:9)

这也发生在我身上。

我这样做了:

  1. 从References
  2. 删除System.Service.Web
  3. 构建
  4. 清洁项目
  5. 将System.Service.Web添加到引用
  6. 构建
  7. ..和VS发现了吗?

答案 3 :(得分:8)

在“项目属性”中,确保将“目标框架”设置为:.NET Framework 4

而不是:.NET Framework 4 Client Profile,或任何较低的.NET版本。

另外,如果可能的话,使用VS 2010。

- DBJ

答案 4 :(得分:3)

  1. 右键单击项目名称,然后选择“属性”。
  2. 将目标框架更改为.NET Framework 4。
  3. 右键单击References并选择Add Reference。
  4. 然后你可以看到System.ServiceModel.Web。
  5. 默认情况下,目标框架是.NET Framework 4 Client Profile, 所以你找不到System.ServiceModel.Web。

答案 5 :(得分:2)

我遇到了同样的问题。

我添加了这个缺少的参考:

<强> System.ServiceModel.Web

和此代码行:

using System.ServiceModel.Web;

所有人都解决了! ;)

答案 6 :(得分:1)

使用System.ServiceModel.Web;

答案 7 :(得分:0)

就我而言,我的项目正在构建,尽管在服务类的设计器视图中出现此警告。这不是一个大问题,但仍然很烦人。意识到只是ReSharper正在播放 - 当我添加新的WCF服务时,VS自动添加对<script src="http://localhost:9000/target/target-script-min.js#anonymous"></script> 的引用时,它没有更新其内部缓存。我关闭了实时代码分析:

  

工具 - &gt;选项 - &gt; Resharper Ultimate - &gt;选项 - &gt;代码检查 - &gt;   设置 - &gt;启用代码分析

这恢复了内置的VS代码分析,问题立即得到解决。

如果您希望继续使用ReSharper代码分析,请在以下位置清除缓存:

  

工具 - &gt;选项 - &gt; Resharper Ultimate - &gt;选项 - &gt;环境 - &gt;   一般 - &gt;清除缓存

也可以对问题进行排序。