[英]WCF Bindings
因此,我有一個正在監聽net.tcp和net.pipe的WCF服務。 我已經生成了一個WCF代理客戶端,我希望它能夠通過tcp或命名管道進行連接。 我不想在app.config中配置,但在代碼中。
WCF客戶端將在運行時獲取端點地址,因此類似“ net.tcp:// mymachine:10001 / MyService”或“ net.pipe:// localhost / MyService”。 我認為它只是基於Uri方案使用正確的NetTcpBinding或NetNamedPipeBinding-但它看起來不是那樣。
我不能僅將代理設置為采用命名管道或tcp綁定,而是根據端點地址選擇一個嗎?
編輯:好的,所以我嗅探該方案並填充綁定:
var uri = new Uri("net.tcp://localhost:10001/MyService");
Binding b;
if (uri.Scheme == Uri.UriSchemeNetPipe) {
b = new NetNamedPipeBinding();
} else if (uri.Scheme == Uri.UriSchemeNetTcp) {
b = new NetTcpBinding();
} else if (uri.Scheme == Uri.UriSchemeHttp || uri.Scheme == Uri.UriSchemeHttps) {
b = new WSHttpBinding();
}
var proxy = new ClientProxy(b, new EndpointAddress(uri));
但出現連接失敗-
如果將Binding更改為BindingElement,並將NamedPipeTransportBindingElement,TcpTransportBindingElement等與CustomBinding一起使用,則可以使用...但是我不確定我知道有什么區別。
不,你不能。 綁定中只能有一個傳輸元素,而沒有多個元素是沒有意義的。
您將必須查看該方案,然后基於該方案選擇正確的綁定。 使用Uri類可以很簡單地完成,它將為您執行解析。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.