C# Wcf REST服务和客户端
你好,我搜索了很长时间,但每个答案都没有解决我的问题。我有休息服务C# Wcf REST服务和客户端,c#,.net,wcf,rest,C#,.net,Wcf,Rest,你好,我搜索了很长时间,但每个答案都没有解决我的问题。我有休息服务 namespace WcfService1 { [ServiceContract] public interface IRestServiceImpl { [OperationContract] [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyS
namespace WcfService1
{
[ServiceContract]
public interface IRestServiceImpl
{
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "images")]
List<MyImage> getImages();
}
[DataContract]
public class MyImage
{
public MyImage(string name, Image img)
{
Name = name;
Img = img;
}
[DataMember]
public string Name
{
get;
set;
}
[DataMember]
public Image Img
{
get;
set;
}
}
}
我有例外:
没有可以接受消息的端点正在侦听。这通常是由不正确的地址或SOAP操作引起的。有关更多详细信息,请参阅InnerException(如果存在)
当我调查InnerException时,我发现:
远程服务器返回错误:(404)未找到
以下是我的客户端app.config文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint address="http://localhost:55008/RestServiceImpl.svc" binding="basicHttpBinding" contract="ServiceReference1.IRestServiceImpl">
</endpoint>
</client>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
我知道这个主题非常流行,但是所有的答案都帮不了我。从您发布的代码来看,service web.config没有带有BasicHttpBinding的端点。要通过代理使用该服务,我相信您需要根据问题中的client web.config添加一个具有BasicHttpBinding的端点。它确实公开了一个REST端点。要调用REST服务,可以使用如下url调用
http://localhost:55008/RestServiceImpl.svc/images
尝试在客户端代码中添加REST服务的Web引用,而不是服务引用
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ServiceReference1.RestServiceImplClient service = new ServiceReference1.RestServiceImplClient();
ServiceReference1.MyImage[] images = service.getImages();
service.Close();
List<ServiceReference1.MyImage> files = images.Select(im => new ServiceReference1.MyImage() { Img = im.Img, Name = im.Name }).ToList();
listViewImages.ItemsSource = files;
}
}
ServiceReference1.MyImage[] images = service.getImages();
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint address="http://localhost:55008/RestServiceImpl.svc" binding="basicHttpBinding" contract="ServiceReference1.IRestServiceImpl">
</endpoint>
</client>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
http://localhost:55008/RestServiceImpl.svc/images