配置WCF同时支持WSDL和REST,swaggerwcf生成文档
生活随笔
收集整理的这篇文章主要介绍了
配置WCF同时支持WSDL和REST,swaggerwcf生成文档
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
配置WCF同时支持WSDL和REST,SwaggerWCF生成文档
VS创建一个WCF工程,通过NuGet添加SwaggerWcf
创建完成后通过 程序包管理控制台
pm>Install-Package SwaggerWcf
也可在 工具 -> NuGet包管理器 -> 管理解决方案的NuGet程序包 安装。
配置
首先对项目添加Global.asax文件,改动如下:
protected void Application_Start(object sender, EventArgs e) {RouteTable.Routes.Add(new ServiceRoute("Service1", new WebServiceHostFactory(), typeof(Service1)));RouteTable.Routes.Add(new ServiceRoute("api-docs", new WebServiceHostFactory(), typeof(SwaggerWcfEndpoint))); }
Web.config配置文件改动如下:
在<configuration>节点下添加
<configSections><section name="swaggerwcf" type="SwaggerWcf.Configuration.SwaggerWcfSection, SwaggerWcf" /></configSections><swaggerwcf><tags><tag name="LowPerformance" visible="false" /></tags><settings><setting name="InfoDescription" value="Sample Service to test SwaggerWCF" /><setting name="InfoVersion" value="0.0.1" /><setting name="InfoTermsOfService" value="Terms of Service" /><setting name="InfoTitle" value="SampleService" /><setting name="InfoContactName" value="Abel Silva" /><setting name="InfoContactUrl" value="http://github.com/abelsilva" /><setting name="InfoContactEmail" value="no@e.mail" /><setting name="InfoLicenseUrl" value="https://github.com/abelsilva/SwaggerWCF/blob/master/LICENSE" /><setting name="InfoLicenseName" value="Apache License" /></settings></swaggerwcf>在<serviceHostingEnvironment>节点后添加
<standardEndpoints><webHttpEndpoint><!-- Configure the WCF REST service base address via the global.asax.cs file and the default endpoint via the attributes on the <standardEndpoint> element below --><standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" crossDomainScriptAccessEnabled="true"/></webHttpEndpoint></standardEndpoints>IService1.cs文件中改动如下:
入参、返回有多个时BodyStyle = WebMessageBodyStyle.Wrapped
[OperationContract][SwaggerWcfPath("标题GetData", "方法详细说明")][WebInvoke(Method = "GET", UriTemplate = "GetData?value={value}",BodyStyle = WebMessageBodyStyle.Bare,RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]string GetData(int value);Service1.svc.cs文件中改动如下:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)][AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)][SwaggerWcf("/Service1")]public class Service1 : IService1{[SwaggerWcfTag("Service1 服务")][SwaggerWcfResponse(HttpStatusCode.Created, "Book created, value in the response body with id updated")][SwaggerWcfResponse(HttpStatusCode.BadRequest, "Bad request", true)][SwaggerWcfResponse(HttpStatusCode.InternalServerError,"Internal error (can be forced using ERROR_500 as book title)", true)]public string GetData(int value){return string.Format("You entered: {0}", value);}[SwaggerWcfTag("Service1 服务")]public string GetDataT(CompositeType composite, int value){return string.Format("You entered: {0}", value);}public string GetDataA(CompositeType composite){return string.Format("You entered: {0}", composite.StringValue);}[SwaggerWcfTag("Service1 服务")]public string GetDataB(CompositeType composite, CompositeType compositea){return string.Format("You entered: {0}", composite.StringValue);}[SwaggerWcfTag("Service1 服务")]public string GetDataTT(string str, int value){return string.Format("You entered: {0}", value);}[SwaggerWcfTag("Service1 服务")]public CompositeType GetDataUsingDataContract(CompositeType composite){if (composite == null){throw new ArgumentNullException("composite");}if (composite.BoolValue){composite.StringValue += "Suffix";}return composite;}}以上配置可参考https://github.com/abelsilva/swaggerwcf。
生成接口文档
wcf自带的rest文档:
swaggerwcf生成的文档:
WSDL调用
使用控制台程序添加服务调用:
REST调用
Network请求和结果:
例子下载地址:https://pan.baidu.com/s/1o8dGnVG
转载于:https://www.cnblogs.com/ddrsql/p/5920562.html
总结
以上是生活随笔为你收集整理的配置WCF同时支持WSDL和REST,swaggerwcf生成文档的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 128 位《王者荣耀》选手通过职业技能等
- 下一篇: 洛谷P2483 Bzoj1975 [