首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebServiceHost不调用自定义ChannelListener的OnAcceptChannel

WebServiceHost不调用自定义ChannelListener的OnAcceptChannel
EN

Stack Overflow用户
提问于 2009-08-07 09:30:17
回答 1查看 360关注 0票数 0

我目前正在构建一个自定义绑定,它从不同的来源获取HTTP请求,而不是从侦听的TCP套接字。当我直接访问并打开一个通道时,没有任何问题。但是,当我尝试在WebServiceHost的端点中承载我的绑定时,就会出现问题。

我已经将Console.WriteLine()调试消息插入到自定义绑定代码的每个函数中。在调用ChannelListener的OnOpen()函数之前,一切都很正常。之后,ServiceModel就不想调用OnAcceptChannel()方法了。没有异常,没有错误消息;它只是挂在那里,不再调用我的绑定的任何其他函数。我已经将应用程序的输出注释到下面的代码中。

代码语言:javascript
复制
WebServiceHost host = new WebServiceHost(
    typeof(MyService), new Uri("http://localhost:80"));
host.AddServiceEndpoint(typeof(MyService), new MyWebHttpBinding(), "");
// BINDING CONSTRUCTOR
// BINDINGELEMENT CONSTRUCTOR
host.Open();
// BINDING: CreateBindingElements (multiple times)
// BINDINGELEMENT: Clone
// BINDINGELEMENT CONSTRUCTOR
// BINDINGELEMENT: CanBuildChannelListener
// BINDINGELEMENT: Clone
// BINDINGELEMENT CONSTRUCTOR
// BINDINGELEMENT: CanBuildChannelListener
// BINDINGELEMENT: Clone
// BINDINGELEMENT CONSTRUCTOR
// BINDINGELEMENT: Clone
// BINDINGELEMENT CONSTRUCTOR
// BINDINGELEMENT: Clone
// BINDINGELEMENT CONSTRUCTOR
// BINDINGELEMENT: BuildChannelListener
// CHANNELLISTENER CONSTRUCTOR
// BINDINGELEMENT: Clone
// BINDINGELEMENT CONSTRUCTOR
// BINDING: CreateBindingElements (multiple times)
// CHANNELLISTENER: OnOpen
// CHANNELLISTENER: OnOpen END (function completes properly. last output)

你们中有谁知道为了正确调用OnAcceptChannel方法,我必须在应用程序中进行哪些更改?

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-07 12:34:01

您是否记录对ChannelListener方法的异步版本的调用?我似乎记得ServiceHost尝试正常地调用OnBeginAcceptChannel,而不是OnAcceptChannel。

另外,是否将处理程序附加到ServiceHost.Faulted事件?可能是它出错了,在主机打开期间,您不一定会得到外部异常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1243831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档