解決兩個 ASP.NET Web API 說明文件(XML document)的問題。紀錄一下.....
問題一:開啟 Web API 說明文件頁面時出現 EntryPointNotFoundException 錯誤。
錯誤訊息如下圖:
解法:
把 web.config 裡面的 <runtime> \ <assemblyBinding> 區段中的 System.Net.Http 組件繫結設定移除。也就是說,刪除以下區塊:
如果你碰到同樣問題,不見得照上述方法就能解決,但解法可能雷同:調整組件繫結的設定(有可能是修改 bindingRedirect 的版本號碼)。
問題二:XML 註解中只能使用限定的標籤,例如 <para>,沒辦法使用 HTML 標籤。
我需要在 <summary> 區塊中使用一些 HTML 標籤,例如 <br />、<a> 等等。預設產生的 Web API 說明文件會移除這些 HTML 標籤。
解法:
我在 stackoverflow.com 找到解法,然後稍微修改一下。作法如下:
開啟 Areas\HelpPage\XmlDocumentationProvider.cs 檔案,找到 GetTagValue 方法,然後把它改成這樣:
由於我只想要在 <summary> 區塊中使用 HTML 標籤,所以特別加了 if 判斷邏輯。
接下來,修改 Areas\HelpPage\Views\Help\DisplayTemplates\ApiGroups.cshtml,找到這行:
<p>@controllerDocumentation</p>
改成這樣:
<p>@Html.Raw(controllerDocumentation)</p>
然後建置專案,把相關 DLL 和 XML 檔案部署至網站。收工!
問題一:開啟 Web API 說明文件頁面時出現 EntryPointNotFoundException 錯誤。
錯誤訊息如下圖:
解法:
把 web.config 裡面的 <runtime> \ <assemblyBinding> 區段中的 System.Net.Http 組件繫結設定移除。也就是說,刪除以下區塊:
<dependentAssembly> <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-2.2.18.0" newVersion="2.2.18.0" /> </dependentAssembly>
如果你碰到同樣問題,不見得照上述方法就能解決,但解法可能雷同:調整組件繫結的設定(有可能是修改 bindingRedirect 的版本號碼)。
問題二:XML 註解中只能使用限定的標籤,例如 <para>,沒辦法使用 HTML 標籤。
我需要在 <summary> 區塊中使用一些 HTML 標籤,例如 <br />、<a> 等等。預設產生的 Web API 說明文件會移除這些 HTML 標籤。
解法:
我在 stackoverflow.com 找到解法,然後稍微修改一下。作法如下:
開啟 Areas\HelpPage\XmlDocumentationProvider.cs 檔案,找到 GetTagValue 方法,然後把它改成這樣:
private static string GetTagValue(XPathNavigator parentNode, string tagName) { if (parentNode != null) { XPathNavigator node = parentNode.SelectSingleNode(tagName); if (node != null) { if ("summary".Equals(tagName)) { return node.InnerXml; // 這行是關鍵。 } return node.Value.Trim(); } } return null; }
由於我只想要在 <summary> 區塊中使用 HTML 標籤,所以特別加了 if 判斷邏輯。
接下來,修改 Areas\HelpPage\Views\Help\DisplayTemplates\ApiGroups.cshtml,找到這行:
<p>@controllerDocumentation</p>
改成這樣:
<p>@Html.Raw(controllerDocumentation)</p>
然後建置專案,把相關 DLL 和 XML 檔案部署至網站。收工!
沒有留言: