一月28
[已解決]Windows Live Writer 嘗試登入時,發生未預期的錯誤

嘗試登入時,發生未預期的錯誤:網路連線錯誤 - 嘗試連線至部落格時發時錯誤:基礎連接已關閉:連接意外關閉嘗試登入時,發生未預期的錯誤:無效的伺服器回應 - 收到部落格伺服器對於 blogger.getUsersBlogs 方法的無效回應:Invalid response document returned from XmlRpc server

我個人一直很依賴【Windows Live Writer 2011(WLW)】這套離線部落格寫作工具來發表我的部落格,這兩天也不知做了什麼動作,居然無法使用WLW連接上我的部落格,總共出現兩種訊息:【嘗試登入時,發生未預期的錯誤:網路連線錯誤 – 嘗試連線至部落格時發時錯誤:基礎連接已關閉:連接意外關閉】以及【嘗試登入時,發生未預期的錯誤:無效的伺服器回應 – 收到部落格伺服器對於 blogger.getUsersBlogs 方法的無效回應:Invalid response document returned from XmlRpc server】。







在網路上找了半天也沒有發現有人提出有效的解決方案,後來我也嘗試了下列順序的修復動作,但都沒有效果:

  • 停掉所有的外掛程式:錯誤依舊存在。
  • 將Wordpress升級到最新的 WordPress 3.8,我原來用的是3.5版:錯誤依舊存在。 (就算Wordpress的版本已經是最新了,還是建議重新安裝一次最新版本)
  • 參考這篇文章【已解決:WLW無效的伺服器回應(Invalid response document returned from XmlRpc server)】,修改class-IXR.php程式碼,增加字串長度3~9:錯誤依舊存在。 (2014/02/03後來發現其他部落格有這樣的現象,只到執行作到這個步驟就可以節決)

在我即將放棄的時候,突然靈光一閃,如果把class-IXR.php及xmlrpc.php改回舊的程式碼,是否有效,因為從錯誤訊息看起來應該在帳號登入的地方就錯了。所以又試了下面的步驟,最後僥倖解決了問題:

  • 將class-IXR.php改回Wordpress3.5舊的程式碼並增加字串:仍然有錯誤,但錯誤訊息變了。再將class-IXR.php回復成最新版。
  • 將xmlrpc.php程式碼改回Wordpress3.5舊的程式碼:賓果,問題解決了。但是我依然不知道發生了什麼問題。

下面是Windows Live Writer的log紀錄檔所顯示的訊息。

WindowsLiveWriter,1.9692,None,00066,15-Jan-2014 16:27:38.791,”XML-RPC request:
http://www.yourblog.com/xmlrpc.php
<?xml version=””1.0″” encoding=””utf-8″”?>
<methodCall>
<methodName>blogger.getUsersBlogs</methodName>
<params>
  <param>
   <value>
    <string>0123456789ABCDEF</string>
   </value>
  </param>
  <param>
   <value>
    <string>yourname</string>
   </value>
  </param>
  <param>
   <value>[removed]</value>
  </param>
</params>
</methodCall>”,””
WindowsLiveWriter,1.9692,None,00067,15-Jan-2014 16:27:38.791,”== BEGIN WebException =====================”,””
WindowsLiveWriter,1.9692,None,00068,15-Jan-2014 16:27:38.791,”Status: ConnectionClosed”,””
WindowsLiveWriter,1.9692,None,00069,15-Jan-2014 16:27:38.791,”System.Net.WebException: 基礎連接已關閉: 連接意外關閉。
   於 System.Net.HttpWebRequest.GetResponse()
   於 WindowsLive.Writer.CoreServices.HttpRequestHelper.SendRequest(String requestUri, HttpRequestFilter filter)
   於 WindowsLive.Writer.CoreServices.XmlRpcClient.CallMethod(String methodName, XmlRpcValue[] parameters)
   於 WindowsLive.Writer.BlogClient.Clients.XmlRpcBlogClient.CallMethod(String methodName, XmlRpcValue[] parameters)”,””
WindowsLiveWriter,1.9692,None,00070,15-Jan-2014 16:27:38.791,”== END WebException =======================”,””
WindowsLiveWriter,1.9692,None,00071,15-Jan-2014 16:27:38.809,”Creating a writable ribbon istream for C:\Users\yourname\AppData\Roaming\Windows Live Writer\Ribbon.dat”,””
WindowsLiveWriter,1.9692,None,00072,15-Jan-2014 16:27:41.139,”Creating a writable ribbon istream for C:\Users\yourname\AppData\Roaming\Windows Live Writer\Ribbon.dat”,””
WindowsLiveWriter,1.9692,None,00073,15-Jan-2014 16:27:44.979,”Creating a writable ribbon istream for C:\Users\yourname\AppData\Roaming\Windows Live Writer\Ribbon.dat”,””

後來我將兩個WordPress版本(3.5與3.8)新舊xmlrpc.php程式碼做了一下的比較,發現下列的不同:

WordPress 3.5 WordPress 3.8
if ( isset ( $GET[‘rsd’] ) ) { // http://archipelago.phrasewise.com/rsd if ( isset ( $GET[‘rsd’] ) ) { // http://cyber.law.harvard.edu/blogs/gems/tech/rsd.html
<api name=”WordPress” blogID=”1″ preferred=”true” apiLink=”<?php echo site_url(‘xmlrpc.php’, ‘rpc’) ?>” /> <?php
/**
* Add additional APIs to the Really Simple Discovery (RSD) endpoint.
*
* @see
http://cyber.law.harvard.edu/blogs/gems/tech/rsd.html
* @since 3.5.0
*/
do_action( ‘xmlrpc_rsd_apis’ );

rsd的連接網址變了,不知道這是不是主要原因? 猜想這個情形也可能只是我個人的問題,因為我所使用的版型可能比較舊。


延伸閱讀:
解決錯誤訊息:無法找到 WordPress Content 目錄(wp-content)
如何解決WordPress “Error establishing a database connection(建立資料庫連線時發生錯誤)”
[已解決]WordPress登入顯示空白問題-更改wp-config.php


本部落格提供免費電子書索取:
我如何開始寫部落格 寫部落格賺錢術 如何提昇部落格人氣

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *