[英]IIS8 There was no endpoint listening at net.tcp:
我在 IIS8 中有一個 WCF 服務主機,我想使用 net.tcp 綁定。
我有這個配置:
網頁配置:
<service behaviorConfiguration="MyBehavior"
name="DecryptService.EmailCenterDecryptTCP">
<host>
<baseAddresses>
<add baseAddress="net.tcp://XX.XX.XX.XX:808/VirtualFolder/Service.svc" />
</baseAddresses>
</host>
<endpoint address=""
binding="netTcpBinding"
bindingConfiguration="portSharingBinding"
name="MyServiceEndpoint"
contract="ServiceNamespace.IService">
</endpoint>
<endpoint address="mextcp"
binding="mexHttpBinding"
bindingConfiguration=""
name="MyServiceMexTcpBidingEndpoint"
contract="IMetadataExchange" />
</service>
當我嘗試使用以下配置在與 IIS8 相同的機器上使用該服務時工作正常:
<client>
<endpoint address="net.tcp://YY.YY.YY.YY:808/VirtualFolder/Service.svc"
binding="netTcpBinding" bindingConfiguration="MyServiceEndpoint"
contract="ServiceReference1.IService" name="MyServiceEndpoint" />
</client>
YY.YY.YY.YY 是機器的本地 IP,但是當我嘗試在另一台機器上使用該服務時,將 YY.YY.YY.YY 更改為運行 IIS8 的機器的外部 IP (ZZ.ZZ.ZZ.ZZ)我收到以下錯誤:
There was no endpoint listening at net.tcp://ZZ.ZZ.ZZ.ZZ/VirtualFolder/Service.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
有任何想法嗎? 感謝並抱歉我的英語不好
編輯:
我制作了一個運行 ServiceHost 的控制台應用程序來替換 IIS,並且使用此配置它可以通過 Internet 工作
var svh = new ServiceHost(typeof (Service));
svh.AddServiceEndpoint(typeof (ServiceNamespace.IService), new NetTcpBinding(SecurityMode.None), "net.tcp://serverLocalIp:808");
svh.Open();
Console.WriteLine("SERVER - Running...");
stopFlag.WaitOne();
Console.WriteLine("SERVER - Shutting down...");
svh.Close();
Console.WriteLine("SERVER - Shut down!");
知道通過 Internet 運行相同服務的 IIS 有什么問題嗎? 本地工作。 謝謝
您還需要設置 IIS 以接收 Net.TCP 連接。
在您的 IIS 應用程序的Advanced Settings
下,然后在Enabled Protocols
下確保您有http,net.tcp
請注意沒有空間,如果您有空間它將失敗。
http://blogs.msdn.com/b/swiss_dpe_team/archive/2008/02/08/iis-7-support-for-non-http-protocols.aspx
如果有一天您突然收到此錯誤,這與另一個進程劫持 net.tcp 端口有關。 就我而言,它是端口 808。這是我在大約 3 天后弄清楚的方法——這就是我現在所做的,谷歌並試圖找出其他人的問題而不是做我自己的工作。
無論如何:
這是有道理的,因為其他一些進程已經在使用端口 808,因此它不可用於Net.TCP 。
此時我有兩個選擇:
幸運的是,他們已經更新了驅動程序,所以我只是從這里下載並安裝了它。
重新啟動然后再次運行以下命令以確保 net.tcp 的端口可用:
簡單的答案,將 IIS 下的端口號 -> 編輯綁定 -> net.tcp 更改為其他內容。 我將其更改為 12345,這解決了我的問題。
這是與使用默認端口 808 的另一個進程相關的問題,如上面的帖子所述。 如果這沒有幫助,請檢查上面的答案和休耕程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.