我们目前正在尝试开始为从传统的基于WCF SOAP的服务切换的产品编写WebApi服务 . 我们面临的挑战是如何提供api文档 . 我偶然发现了SwaggerUi / swash扣 . 我们的一个限制是我们不希望在IIS中但在Windows服务中托管WebApi服务 . 我是Web Api的新手,所以我可能会以错误的方式做事 .
因此,对于测试,我在控制台应用程序中托管web api . 我可以使用HttpClient在Web Api上调用Get方法,但是如果我在Web浏览器中键入url,我就无法访问它(这对于自托管的web api来说是正常的吗?) .
所以我安装了Swashbuckle.core nuget包,并在Startup类中包含了以下代码(Owin selfhosted) .
var config = new HttpConfiguration();
config
.EnableSwagger(c =>
{
c.IncludeXmlComments(GetXmlCommentsPath());
c.SingleApiVersion("v1", "WebApi");
c.ResolveConflictingActions(x => x.First());
})
.EnableSwaggerUi();
private static string GetXmlCommentsPath()
{
var path = $@"{AppDomain.CurrentDomain.BaseDirectory}\WebApiHost.XML";
return path;
}
当我浏览到以下位置时http://localhost:5000/swagger/ui/index我在IE中得到"page cannot be displayed" . 类似于铬 . 在控制台/ Windows服务应用程序中托管WebApi以自动获取文档时,是否需要执行任何特殊操作?
(我已为项目启用了Xml文档)
我现在已经附上了一个测试项目 . 请点击以下链接:
问候,
纳斯
1 回答
您的问题不适用于正确配置的Swashbuckle . 相反,当浏览器导航到swagger URI时,您的OWin Web应用程序已关闭 . 您的使用声明表示Web应用程序在其结束时关闭 - 远在Chrome打开并导航到招摇路径之前 . 您需要确保Web应用程序仍在运行 - 那么您的路径将是有效的(尽管在您的源代码中,您的url变量中有不同的端口9000和5000) .