解決兩個 ASP.NET Web API 說明文件的問題

解決兩個 ASP.NET Web API 說明文件(XML document)的問題。紀錄一下.....

問題一:開啟 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 檔案部署至網站。收工!

Post Comments

技術提供:Blogger.