2017-10-12 180 views
2

我有一個ASP.NET Core 2.0 Web API,我通過Swashbuckle添加了Swagger。這很好。Swagger可以呈現app.UseDeveloperExceptionPage()的內容嗎?

我還在ASP.NET Core中啓用了app.UseDeveloperExceptionPage()選項。這很好。

但他們一起玩得不好。因爲SwaggerUI只是將返回的HTML顯示爲文本。

對於GET請求,它不是一個大問題,因爲我只是將url粘貼到瀏覽器中。但對於POST不起作用。 所以我想知道是否有一種方法來使SwaggerUI呈現html時Content-Type標題是text/html。我一直無法找到任何與此相關的,這是一個令人費解的一點:)

回答

1

從招搖開發者:

我們必須清理HTML,以避免注射標籤並啓用XSS漏洞 。所以是的,原始html是你應該看到的。

但是,您可以自行更改招搖,ui.js由nicksellen提供

--- swagger-ui.js 2015-09-19 20:58:10.000000000 +0200 
+++ swagger-ui.js 2015-11-16 13:45:26.958266568 +0100 
@@ -31855,9 +31855,10 @@ 

    // HTML 
    } else if (contentType === 'text/html') { 
-  code = $('<code />').html(_.escape(content)); 
-  pre = $('<pre class="xml" />').append(code); 
- 
+  var iframe = document.createElement('iframe'); 
+  iframe.srcdoc = content; 
+  iframe.style = 'width: 100%; height: 500px;'; 
+  pre = iframe; 
    // Plain Text 
    } else if (/text\/plain/.test(contentType)) { 
     code = $('<code />').text(content); 

代碼爲https://github.com/swagger-api/swagger-ui/issues/1748

要使用Swashbuckle整合這一變化:

  1. GitHub下載Swashbuckle
  2. swagger-u i.js位於bower_components \ swagger-ui \ dist文件夾中的Swashbuckle.AspNetCore.SwaggerUI項目中。進行上述編輯並編譯。
  3. 在項目中,刪除Swashbuckle NuGet包,加入到步驟中創建的DLL文件的引用2.

由於的NuGet不再管理這個包,這將是由你來定期檢查Swashbuckle項目如果你想更新,重複這個過程。

+0

甜蜜的感謝。現在我只需要弄清楚如何將其與Swashbuckle進行整合:) –

+0

編輯答案包括如何與Swashbuckle集成。 –

+0

你是男人:) –