我有一個服務部署在我的服務器上,是使用WCF服務的自我托管應用程式。 我的應用程式作為資料庫和前端應用程式之間的橋梁,兩個應用程式都是WPF。 多年來它一直運行良好,我一直在升級 "橋梁 "應用程式和前端應用程式,沒有任何問題,當然,除了連接問題。
目前,我使用HTTP基本系結在它們之間進行通信,沒有任何問題,然而前段時間我使用TCP,因為它更快,它突然停止了作業,一直找不到真正的原因,所以我只是切換到HTTP,畢竟這個協議不需要我偶爾ping來保持連接,盡管它更慢,但更方便。
最近,幾天前我無法再在應用程式之間進行通信,互聯網通信不再起作用,它會發送 "無HTTP回應 "的錯誤,但我的內網連接沒有任何問題,我仍然可以做到這一點,沒有任何問題,只有互聯網連接時才會失敗。
我最近沒有更新任何應用程式。
我最近沒有更新這兩個應用程式。
代碼在內部網中作業正常
代碼在內部網中作業正常
禁用了防火墻
我有幾個備份,我使用了以前的一些實體,仍然不能作業
停止了其他服務
改變了組態檔中的一些配置引數
改變了組態檔中的一些配置引數
我試著把它改成了 "我"。
我試圖制作一個樣本服務,將其托管在服務器中,但最新的VS2019沒有將system.servicemodel DLL包含在參考中(Microsoft修復你的廢話),而不是試圖修復這個問題,我只是向前邁進,以解決我目前的問題
。
改變了埠
- 重新啟動
重新啟動了服務器數次。
重新啟動了兩個應用程式數次。
重新啟動了兩個應用程式數次。
- 你說這個問題是由你自己造成的。
- 你說這個問題存在于其他機器上,但在該機器的網路正常的前提下,這意味著代碼有問題。
- 切換到 TCP 并再次嘗試。如果成功了,HTTP 回應就是這個原因。
這使我相信我確實做得對,因此我進行了一系列的測驗,以找出問題所在,但都沒有結果:
這使我相信我確實做得對。
下面是跟蹤記錄:
server stack trace: en System.ServiceModel.Channels.HttpChannelUtilities.ProcessGetResponseWebException(WebException webException, HttpWebRequest request, HttpAbortReason abortReason) en System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout) en System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout) en System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout) en System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout) en System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) en System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
。在[0]處重新拋出例外。 en System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) en System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) en IConexion.Ping() en ConexionClient.Ping()
內部例外。 Se ha terminado la conexión: 接收時出現錯誤。 en System.Net.HttpWebRequest.GetResponse() en System.ServiceModel.Channels.HttpChannelFactory`1.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
內部例外。 No se puede escribir datos de en la conexión de transporte: Se ha forzado la interrupción de una conexión existente por el host remoteo. en System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) en System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size) en System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead)
內部例外。 Se ha forzado la interrupción de una conexión existente por el host remoto en System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) en System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
我正在使用WCFtestClient,有時它會添加服務,有時不會。當它添加時,它獲得了所有的元資料,但沒有任何作用,發送了那個跟蹤,我甚至有些方法(PING()沒有回傳任何東西,它是用來保持連接的,另一個回傳一年中的幾個月的方法也沒有作用。
我在服務器中托管了一些網站,可以毫無問題地從內部網和互聯網上訪問,這些網站使用這個 "橋梁 "從資料庫中檢索資料,因此它在本地也作業正常。
我還使用了tracelog:無法張貼所有的代碼,但它說I/O應用程式錯誤
誰能幫我弄清楚?
誰能幫我弄清楚到底發生了什么?現在,我打算用我的電腦來托管,從另一臺電腦上訪問,也許是服務器出了問題(我沒有UPS,而且最近由于下雨,有一些電流被切斷),也許是它以某種方式被破壞了,但我最后的辦法是重新安裝windows server。 謝謝!
編輯:我在不同的機器上運行了這個實體,同樣的問題...... 我不知道發生了什么事。
編輯2:以下是組態檔的代碼:
<?xml version="1.0" encoding="utf-8" ? >
<configuration>/span>
<startup>/span>
<supportedRuntime version="v4. 0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.serviceModel>
<services>
<service name="BSUITE_CONSOLA.Conexion"/span>>
< endpoint address="" binding="basicHttpBinding" bindingConfiguration="
contract="BSUITE_CONSOLA.IConexion"/span> />
< endpoint address="mex"/span> binding="mexHttpBinding" bindingConfiguration="
contract="IMetadataExchange" <>
<host>
<baseAddresses>/span>
<add baseAddress="http://localhost:80/BDB/"/span>/>
</baseAddresses>/span>
</host>/span>
</service>/span>
</services>/span>
<behaviors>>
<serviceBehaviors>/span>
<behavior name=""/span>>
< serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="false"/span> />/span>
<useRequestHeadersForMetadataAddress />
</behavior>
</serviceBehaviors>/span>
</behaviors>/span>
<系結>/span>
<netTcpBinding>/span>
<binding name="tcp_Unsecured" >
<reliableSession enabled="true"/span> />
<security mode="none"> </security>>
</系結>/span>
</netTcpBinding>/span>
</bindings>/span>
</system.serviceModel>
</configuration>/span>
編輯3:我知道使用套接字編程更難,但你認為它的故障率會更低嗎? 我討厭WCF經常隨機失敗
。編輯4:我嘗試在不同的電腦上托管,使用不同的埠,使用不同的協議(TCP、NETTCP、NETHTPS)。
uj5u.com熱心網友回復:
如果我理解正確的話,你可以嘗試下面的步驟:
您還可以查看下面的鏈接:通過 HTTPS 和 HTTP 訪問時,WCF 服務不作業。
。謝謝。
uj5u.com熱心網友回復:
我無法表達我在過去4天里感到多么的沮喪。結果發現這不是我在做什么。昨天我做了一些配置上的改變,我以為是因為這個原因,但今天我又恢復到以前的設定,你猜怎么著,它成功了。有幾個ISP的人在周圍5公里范圍內修復一些節點。我認為這確實是我的ISP造成的,怎么造成的?我不知道,因為我解釋說我可以訪問IIS托管的網頁,但不能使用80埠的服務。我只想狠狠地揍他們一頓,可惜那是違法的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/316162.html
標籤:
