none
Windows Form當SignalR Client,有時候連線會失敗 RRS feed

  • 問題

  • 我建立了一個ASP.NET WebForm(C# .NET Framework 4.5)專案,並加上SignalR Server(persistence connection)相關的程式碼,並且把所有的外掛都更新到最新。也建立了一個Windows Form當SignalR Client,但是有時候,Window Form無法連線成功,會出現以下錯誤訊息:

    我的Widnows Form Client是.NET Framework 4.5。這個情形下,如果我關閉所有專案,重新再開啟有時候會正常,但是我如果反覆測試則常常會發生Client連線錯誤。

    我的ASP.NET Web Form專案安裝的package如下:

    請問一下有人知道如何解決這個問題嗎?

    <?xml version="1.0" encoding="utf-8"?>
    <packages>
      <package id="AjaxControlToolkit" version="17.1.1.0" targetFramework="net45" />
      <package id="Antlr" version="3.4.1.9004" targetFramework="net45" />
      <package id="AspNet.ScriptManager.jQuery" version="3.1.1" targetFramework="net45" />
      <package id="AspNet.ScriptManager.jQuery.UI.Combined" version="1.12.1" targetFramework="net45" />
      <package id="DotNetOpenAuth.AspNet" version="4.3.4.13329" targetFramework="net45" />
      <package id="DotNetOpenAuth.Core" version="4.3.4.13329" targetFramework="net45" />
      <package id="DotNetOpenAuth.OAuth.Consumer" version="4.3.4.13329" targetFramework="net45" />
      <package id="DotNetOpenAuth.OAuth.Core" version="4.3.4.13329" targetFramework="net45" />
      <package id="DotNetOpenAuth.OpenId.Core" version="4.3.4.13329" targetFramework="net45" />
      <package id="DotNetOpenAuth.OpenId.RelyingParty" version="4.3.4.13329" targetFramework="net45" />
      <package id="EntityFramework" version="6.1.3" targetFramework="net45" />
      <package id="EntityFramework.zh-Hant" version="6.1.3" targetFramework="net45" />
      <package id="jQuery" version="3.1.1" targetFramework="net45" />
      <package id="jQuery.UI.Combined" version="1.12.1" targetFramework="net45" />
      <package id="Microsoft.AspNet.Cors" version="5.2.3" targetFramework="net45" />
      <package id="Microsoft.AspNet.Membership.OpenAuth" version="2.0.1" targetFramework="net45" />
      <package id="Microsoft.AspNet.Membership.OpenAuth.zh-Hant" version="2.0.1" targetFramework="net45" />
      <package id="Microsoft.AspNet.Providers.Core" version="2.0.0" targetFramework="net45" />
      <package id="Microsoft.AspNet.Providers.Core.zh-Hant" version="2.0.0" targetFramework="net45" />
      <package id="Microsoft.AspNet.Providers.LocalDB" version="2.0.0" targetFramework="net45" />
      <package id="Microsoft.AspNet.ScriptManager.MSAjax" version="5.0.0" targetFramework="net45" />
      <package id="Microsoft.AspNet.ScriptManager.WebForms" version="5.0.0" targetFramework="net45" />
      <package id="Microsoft.AspNet.SignalR" version="2.2.2" targetFramework="net45" />
      <package id="Microsoft.AspNet.SignalR.Core" version="2.2.2" targetFramework="net45" />
      <package id="Microsoft.AspNet.SignalR.JS" version="2.2.2" targetFramework="net45" />
      <package id="Microsoft.AspNet.SignalR.SystemWeb" version="2.2.2" targetFramework="net45" />
      <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net45" />
      <package id="Microsoft.AspNet.Web.Optimization.WebForms" version="1.1.3" targetFramework="net45" />
      <package id="Microsoft.AspNet.Web.Optimization.zh-Hant" version="1.1.3" targetFramework="net45" />
      <package id="Microsoft.Net.Http" version="2.0.20505.0" targetFramework="net45" />
      <package id="Microsoft.Owin" version="3.1.0" targetFramework="net45" />
      <package id="Microsoft.Owin.Cors" version="3.1.0" targetFramework="net45" />
      <package id="Microsoft.Owin.Host.SystemWeb" version="3.1.0" targetFramework="net45" />
      <package id="Microsoft.Owin.Security" version="3.1.0" targetFramework="net45" />
      <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
      <package id="Modernizr" version="2.8.3" targetFramework="net45" />
      <package id="Newtonsoft.Json" version="10.0.2" targetFramework="net45" />
      <package id="Owin" version="1.0" targetFramework="net45" />
      <package id="WebGrease" version="1.6.0" targetFramework="net45" />
    </packages>


    2017年6月7日 上午 06:57

解答

所有回覆

  • 登記處理Received事件的程式碼是否會執行多次? 是否有控制成只會執行一次?
    2017年6月7日 下午 12:28
  • 既然是 Internal server error . 應該從 server 查問題吧 ?

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    2017年6月9日 上午 03:03
    版主
  • Received事件只呼叫一次。

    有時候Server執行的時候會出現以下的錯誤訊息,但是有時候Rebuild後又正常。

    '/' 應用程式中發生伺服器錯誤。 
    ________________________________________
    
    無法載入檔案或組件 'Newtonsoft.Json' 或其相依性的其中之一。 找到的組件資訊清單定義與組件參考不符。 (發生例外狀況於 HRESULT: 0x80131040) 
    描述: 在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。 
    
    例外狀況詳細資訊: System.IO.FileLoadException: 無法載入檔案或組件 'Newtonsoft.Json' 或其相依性的其中之一。 找到的組件資訊清單定義與組件參考不符。 (發生例外狀況於 HRESULT: 0x80131040)
    
    原始程式錯誤: 
    在執行目前 Web 要求期間,產生未處理的例外狀況。如需有關例外狀況來源與位置的資訊,可以使用下列的例外狀況堆疊追蹤取得。
    
    
    
    組件載入追蹤: 下列資訊在確定為何無法載入組件 'Newtonsoft.Json' 時是有幫助的。
    
    === 繫結前狀態資訊 ===
    記錄: DisplayName = Newtonsoft.Json
    (Partial)
    警告: 提供了組件的部分繫結資訊:
    警告: 組件名稱: Newtonsoft.Json | 網域 ID: 2
    警告: 如果只提供部分的組件顯示名稱,就會發生部分繫結。 
    警告: 這可能會使繫結器載入不正確的組件。
    警告: 建議為組件提供完全指定的文字識別,
    警告: 該識別是由簡單名稱、版本、文化特性和公開金鑰語彙基元組成。
    警告: 如需詳細資訊和這個問題的一般解決方法,請參閱白皮書 http://go.microsoft.com/fwlink/?LinkId=109270。
    記錄: Appbase = file:///D:/TzuchiWeb/Mobile/eBook2017/eBook.CSharp/
    記錄: 初始 PrivatePath = D:\TzuchiWeb\Mobile\eBook2017\eBook.CSharp\bin
    正在呼叫組件 : (Unknown)。
    ===
    記錄: 此繫結在 default 載入內容中開始。
    記錄: 正在使用應用程式組態檔: D:\TzuchiWeb\Mobile\eBook2017\eBook.CSharp\web.config
    記錄: 使用主機組態檔: D:\MyDoc\IISExpress\config\aspnet.config
    記錄: 從 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 使用電腦組態檔。
    記錄: 目前不會套用原則至參考 (私用、自訂、部分或以位置為主的組件繫結)。
    記錄: 正在嘗試從新的 URL file:///C:/Users/hp/AppData/Local/Temp/Temporary ASP.NET Files/vs/3a472253/dfbbacd0/Newtonsoft.Json.DLL 下載。
    記錄: 正在嘗試從新的 URL file:///C:/Users/hp/AppData/Local/Temp/Temporary ASP.NET Files/vs/3a472253/dfbbacd0/Newtonsoft.Json/Newtonsoft.Json.DLL 下載。
    記錄: 正在嘗試從新的 URL file:///D:/TzuchiWeb/Mobile/eBook2017/eBook.CSharp/bin/Newtonsoft.Json.DLL 下載。
    記錄: 正在使用應用程式組態檔: D:\TzuchiWeb\Mobile\eBook2017\eBook.CSharp\web.config
    記錄: 使用主機組態檔: D:\MyDoc\IISExpress\config\aspnet.config
    記錄: 從 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 使用電腦組態檔。
    記錄: 在應用程式組態檔中找到重新導向: 重新導向 6.0.0.0 至 10.0.0.0。
    記錄: 原則後參考: Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
    記錄: 正在嘗試從新的 URL file:///C:/Users/hp/AppData/Local/Temp/Temporary ASP.NET Files/vs/3a472253/dfbbacd0/Newtonsoft.Json.DLL 下載。
    記錄: 正在嘗試從新的 URL file:///C:/Users/hp/AppData/Local/Temp/Temporary ASP.NET Files/vs/3a472253/dfbbacd0/Newtonsoft.Json/Newtonsoft.Json.DLL 下載。
    記錄: 正在嘗試從新的 URL file:///D:/TzuchiWeb/Mobile/eBook2017/eBook.CSharp/bin/Newtonsoft.Json.DLL 下載。
    警告: 比較組件名稱發現不符項目: 主要版本
    錯誤: 無法完成組件的安裝 (hr = 0x80131040)。已終止探查。
    
    
    
    堆疊追蹤: 
    
    [FileLoadException: 無法載入檔案或組件 'Newtonsoft.Json' 或其相依性的其中之一。 找到的組件資訊清單定義與組件參考不符。 (發生例外狀況於 HRESULT: 0x80131040)]
    
    [FileLoadException: 無法載入檔案或組件 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其相依性的其中之一。 找到的組件資訊清單定義與組件參考不符。 (發生例外狀況於 HRESULT: 0x80131040)]
      System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +0
      System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +36
      System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks) +152
      System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean forIntrospection) +77
      System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection) +21
      System.Reflection.Assembly.Load(String assemblyString) +28
      System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +38
    
    [ConfigurationErrorsException: 無法載入檔案或組件 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其相依性的其中之一。 找到的組件資訊清單定義與組件參考不符。 (發生例外狀況於 HRESULT: 0x80131040)]
      System.Web.Configuration.CompilationSection.LoadAssemblyHelper(String assemblyName, Boolean starDirective) +738
      System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +217
      System.Web.Configuration.CompilationSection.LoadAssembly(AssemblyInfo ai) +130
      System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig) +170
      System.Web.Compilation.BuildManager.GetPreStartInitMethodsFromReferencedAssemblies() +92
      System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +290
      System.Web.Compilation.BuildManager.ExecutePreAppStart() +157
      System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +549
    
    [HttpException (0x80004005): 無法載入檔案或組件 'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 或其相依性的其中之一。 找到的組件資訊清單定義與組件參考不符。 (發生例外狀況於 HRESULT: 0x80131040)]
      System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +10044576
      System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +95
      System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254
    


    2017年6月10日 下午 12:06
  • 我後來加了 app.UseCors(CorsOptions.AllowAll); ,問題就被解決了

        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {
    			app.UseCors(CorsOptions.AllowAll);
    
    			//var config = new Microsoft.AspNet.SignalR.ConnectionConfiguration();
    			//config.EnableJSONP = true;
    			
    			app.MapSignalR<EchoConnection>("/realtime/echo");
            }
        }


    • 已標示為解答 akira32 2017年7月5日 上午 07:02
    2017年6月22日 上午 06:51