所以我之前的问题围绕着将wcf变成一个宁静的服务convert a WCF Service, to a RESTful application?,我设法做了一些帮助!
但是我的客户遇到了一个新问题:
http://localhost:26535/Service1.svc没有可以接受该消息的端点监听 这通常是由错误的地址或SOAP操作引起的。看到 InnerException(如果存在),以获取更多详细信息。
现在,从屏幕转储可以看到,restful服务正在运行:
我可以从url中添加值1,如下所示:
但是我似乎无法在另一个新的visual studio实例上运行它,我的客户端app.config看起来像这样:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="WebHttpBinding_IService1">
<textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
messageVersion="Soap12" writeEncoding="utf-8">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</textMessageEncoding>
<httpTransport></httpTransport>
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="http://localhost:26535/Service1.svc" binding="customBinding" bindingConfiguration="WebHttpBinding_IService1"
contract="ServiceReference1.IService1" name="WebHttpBinding_IService1" />
</client>
</system.serviceModel>
</configuration>
客户代码:
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
public ServiceReference1.Service1Client testClient = new ServiceReference1.Service1Client();
private void button1_Click(object sender, EventArgs e)
{
label1.Text = testClient.GetData(Convert.ToInt32(textBox1.Text));
}
}
}
我在这里查看此区域的先前问题:WCF - "There was no endpoint listening at..." error
但它没有提供解决方案?我不熟悉IIS上的托管或者这不仅仅是练习,所以让它在调试(F5)上工作将是zer goood!
答案 0 :(得分:2)
这可能实际上是由于对REST服务的更改。
尝试从主机配置中删除/注释掉
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
似乎REST没有传递任何元数据(因此删除了mex)
如果您重置服务引用,它应该正常工作......我相信。
此外,this article可能有用
如果您能够使用第三方,那么我建议您使用RestSharp。它使得非常容易使用RESTful服务:)
或者你可以使用更新的WebAPI来使这些调用更直接吗?问题是RESTful服务不像SOAP调用那样容易消耗