我目前正在構建一個自定義綁定,它從不同的來源獲取HTTP請求,而不是來自偵聽的TCP套接字。 當我直接訪問並打開一個頻道時,沒有問題。 但是,當我嘗試在WebServiceHost的端點中託管我的綁定時發生問題。WebServiceHost不會調用自定義ChannelListener的OnAcceptChannel
我已將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方法才能正確調用?
乾杯
WebServiceHost用於REST樣式請求....也許這就是問題所在?如果你使用常規的ServiceHost類呢? – 2009-08-07 09:49:04
綁定[i]應該用於像原始WebHttpBinding那樣的REST樣式請求。 但是,將WebServiceHost更改爲ServiceHost並不能解決問題。輸出完全一樣。 – Etan 2009-08-07 10:01:39