我想创建一个简单的WCF Hello world客户端,它可以连接到WCF REST服务。
但我有以下错误:
“无法在ServiceModel客户端配置部分找到引用合同'ServiceReference1.IService1'的默认端点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为找不到与此合同匹配的端点元素客户元素。“
我做了什么:
- 我使用“WCF服务应用程序”模板
创建了一个名为“WCFerror”的新项目- 我的web.config是这样的:http://pastebin.com/KEGqRgPr
- 我的服务界面也很简单:
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet(UriTemplate = "GetData?value={value}", ResponseFormat = WebMessageFormat.Json)]
string GetData(int value);
}
- 我创建了一个新的控制台应用程序。
- 我启动了我的WCFerror服务的新实例(通过“开始调试”),它是托管的,我在网络浏览器中试用了它
(比如:http://localhost:58475/Service1.svc/GetData?value=4
),它运作良好。
- 然后我添加了对控制台应用程序的服务引用(地址为:http://localhost:58475/Service1.svc
),在后台,svcutil生成了客户端代码和app.config - 但是一个空的app.config!
- 所以我的客户不能工作:
ServiceReference1.Service1Client client = new ServiceReference1.Service1Client();
Console.WriteLine(client.GetData(4));
- 我尝试通过命令提示符运行svcutil,如下所示:
svcutil.exe /language:cs /out:GeneratedProxy.cs /config:app.config http://localhost:58475/Service1.svc
但它会生成相同的空app.config。
我做错了什么? :(
答案 0 :(得分:5)
添加服务引用使用WSDL或WS-MetadataExchange。这两个都是SOAP结构。 REST没有元数据标准。您必须自己滚动消息,最好使用框架。您是否看过作为新Web API一部分的HttpClient? Its available via Nuget