2014-01-27 71 views
2

我开发了一个WebAPI并试图使用Swagger.Net来记录它。我的.Net框架版本是4.5.1,而Swagger.Net似乎是用.Net 4.0编写的。所以它总是以System.Web.Http版本不兼容错误结束(位于程序集清单定义与程序集引用不匹配)。解决方案编译成功,但在浏览器中打开时,它会出错。Swagger.net是否支持比4.0更高的.Net框架

另外我也试过在VS 2013和.Net framework 4.5中重新编译Swagger.net的源代码,但是甚至在需要System.Web.Http 4.0.0的时候它甚至比它结束了。

+0

仅供参考:我使用System.Web.Http v-5.0的基本目的是为WebAPI 2.0提供属性路由。 – theGeekster

+1

[Swagger.NET MVC Api Exception]的可能重复(http://stackoverflow.com/questions/21043328/swagger-net-mvc-api-exception) – durron597

回答

0

我不认为Swagger已经更新,可以与ASP.NET Web API的最新版本5.05.1一起使用。你可以通过绑定重定向来解决你的问题,但是我可以想象Swagger会因最新版本的Web API而失败,因为自Swagger上一次发布以来,事情发生了很大变化.try将以下内容添加到web.config中。

<system.webServer> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" /> 
      <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0" /> 
     </dependentAssembly> 
+0

按照您的建议添加,但它没有解决除了将错误更改为这个问题之外的问题[Method'GetDocumentation'来自程序集'Swagger.Net.XmlCommentDocumentationProvider',其中'Swagger.Net,Version = 0.5.1.0,Culture = neutral,PublicKeyToken = null'没有实现。] – theGeekster

+0

我认为这是预期的,因为Swagger尚未更新到最新版本的Web API。 –

+0

那么,我认为对于我来说,你会建议坚持使用swagger来记录我的WebAPI 2.0,直到他们修改源代码?任何建议请 – theGeekster

0

我已经结束了结论,即使用Swagger.Net,我们不能使用属性路由(或其他WebaPI2特性,如原生支持CORS等)

2

@theGeekster:仅供参考,您现在可以使用的WebAPI 2.X这个叉:

https://github.com/Gcastelo/Swagger.Net

原来swagger.net项目looks dead

享受!

+0

它也支持CORS,就像你也提到的那样。 – PRB

+0

我正在尝试将上面提到的Swagger.net升级整合到我的WebAPI2中。它支持CORS,但是当涉及到属性路由时,则存在问题。我可以提到例如[Route(“api/v1 // vendors”)]与[HttpGet]一起作为Http动词,但没有任何作用。它似乎只是用config.Routes.MapHttpRoute创建/ docs。 – theGeekster