Tôi đang bối rối là lý do tại sao một số hoạt động. Tôi đang định cấu hình dịch vụ wcf như sau:Điểm cuối dịch vụ WCF nhầm lẫn cục bộ
<services>
<service name="ClientCommand" behaviorConfiguration="SomeServiceBehavior">
<endpoint contract="IClientCommand" binding="netTcpBinding" BindingConfiguration="TcpPort" address="net.tcp://localhost:1304" />
</service>
</services>
BindingConfiguration and behaviorConfiguration rất đơn giản, chỉ cần định cấu hình một số thời gian chờ.
Trong exe của tôi, tôi bắt đầu lưu trữ như thế này.
_serverHost = new ServiceHost(type); // implementing IClientCommand
_serverHost.Open();
Thật đơn giản và nó hoạt động, tôi có thể gọi dịch vụ này từ một máy tính khác. Tuy nhiên, sau khi đọc về một vấn đề khác (nghe trên ổ cắm tcp), tôi có ấn tượng rằng nó không hoạt động. Vì tôi đang ràng buộc với localhost dịch vụ không nên truy cập được từ bên ngoài máy tính đang chạy?
Tôi đã kiểm tra netstat trên máy tính và nó đã liên kết với địa chỉ ip "0.0.0.0" thay vì "127.0.0.1" giải thích lý do tại sao nó hoạt động từ một máy tính khác.
Nhưng tôi không hiểu tại sao nó chuyển từ localhost sang "0.0.0.0"?
Tôi đã đào sâu hơn một chút, chỉ để trở nên bối rối hơn. Nếu tôi sử dụng 'net.tcp: // 127.0.0.1/service', nó sẽ thực sự liên kết với loopback và nó sẽ không thể truy cập từ bên ngoài của máy tính. Tuy nhiên 'net.tcp: // localhost/service' sẽ liên kết với 0.0.0.0 và có thể truy cập từ bên ngoài vòng lặp. Tại sao? – Greuntesop