我目前正在构建一个自定义绑定,它从不同的来源获取HTTP请求,而不是从侦听的TCP套接字。当我直接访问并打开一个通道时,没有任何问题。但是,当我尝试在WebServiceHost的端点中承载我的绑定时,就会出现问题。
我已经将Console.WriteLine()调试消息插入到自定义绑定代码的每个函数中。在调用ChannelListener的OnOpen()函数之前,一切都很正常。之后,ServiceModel就不想调用OnAcceptChannel()方法了。没有异常,没有错误消息;它只是挂在那里,不再调用我的绑定的任何其他函数。我已经将应用程序的输出注释到下面的代码中。
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方法,我必须在应用程序中进行哪些更改?
干杯
发布于 2009-08-07 12:34:01
您是否记录对ChannelListener方法的异步版本的调用?我似乎记得ServiceHost尝试正常地调用OnBeginAcceptChannel,而不是OnAcceptChannel。
另外,是否将处理程序附加到ServiceHost.Faulted事件?可能是它出错了,在主机打开期间,您不一定会得到外部异常。
https://stackoverflow.com/questions/1243831
复制相似问题