我正在开发一个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();
}
}
任何建议都会非常感激。
答案 0 :(得分:30)
您需要引用System.ServiceModel.Web DLL。
右键单击项目中的“References”文件夹,然后选择“Add Reference ...”。向下滚动到System.ServiceModel.Web并单击“确定”。
答案 1 :(得分:26)
只需一想,您可能会将您的项目定位到.Net客户端配置文件,该配置文件会公开有限的命名空间。您可能需要检查项目属性中的目标框架设置。
我遇到过一个WCF项目没找到System.ServiceModel.Web,直到我改变了默认的框架设置。
HTH
答案 2 :(得分:9)
这也发生在我身上。
我这样做了:
..和VS发现了吗?
答案 3 :(得分:8)
在“项目属性”中,确保将“目标框架”设置为:.NET Framework 4
而不是:.NET Framework 4 Client Profile,或任何较低的.NET版本。
另外,如果可能的话,使用VS 2010。
- DBJ
答案 4 :(得分:3)
默认情况下,目标框架是.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;清除缓存
也可以对问题进行排序。