【问题标题】:No endpoint listening wcf/rest没有端点监听 wcf/rest
【发布时间】:2012-03-24 20:07:28
【问题描述】:

所以我之前的问题围绕着将 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)上工作会很好!

【问题讨论】:

  • 你内心的异常是什么?这可能会更清楚地说明这一点。
  • 做一个内部异常只是说远程服务器返回了一个错误:(404)未找到。

标签: c# wcf visual-studio-2010 rest


【解决方案1】:

这实际上可能是由于对 REST 服务的更改。

尝试从您的主机配置中删除/注释掉它

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>

似乎 REST 没有传递任何元数据(因此删除了 mex)

如果您随后重置您的服务参考,它应该可以正常工作...我相信。

另外,this article 可能很有用

如果您可以使用第三方,那么我建议您使用RestSharp。它使使用 RESTful 服务变得非常容易:)

或者您也可以使用更新的 WebAPI 来使这些调用更直接?问题是 RESTful 服务不像 SOAP 调用那样容易使用

【讨论】:

  • 如果我将客户端中的绑定更改为 webhttpbinding,我在更新服务引用时收到错误消息:由于以下问题,无法更新服务引用的配置:system.servicemodel/binding/webhttpbinding 的 dinding 没有有一个名为 webhttpbindig_Iservice1 的已配置绑定,这是 app.config line 17 的无效值绑定
  • 好的,把 customBinding 放回去,但不要让 mex 退出服务,看看会发生什么 :)...这篇文章也让我相信这可能仍在发送 POST,当你现在正在寻找 GET...forums.asp.net/t/1695037.aspx/1 你可以使用 fiddler 查看通过网络发送的内容吗?
  • 其实,最重要的是。我建议看看 RestSharp。我不确定你是否能够使用它,但它使使用 REST 服务变得非常简单
  • 没有任何东西被发送它在客户端提琴手的失败没有显示任何东西所以它的配置问题,或者我不能在两个不同的 VS2010 解决方案中托管和服务客户​​端?微软完全是垃圾啊
  • 这不是很安静,但是您可以尝试将您的 WebGet 更改为 WebPost 以查看这是否可能是问题所在(将 MEX 放回原处,以及在最近进行这些更改之前的所有其他内容)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多