搭建webapi相关配置

1.创建一个空的WebApi项目

 

2.安装help文档:

install-package Microsoft.AspNet.WebApi.HelpPage

3.注册help:

Global.asax==> AreaRegistration.RegisterAllAreas();

4.启用SetDocumentationProvider: 

WebApplication/Areas/HelpPage/App_Start/HelpPageConfig.cs 目录下,找到下面代码,并取消注释(App_Data 改为 bin):

5. WebApplication Build 配置 XmlDocument 输出路径

6.如果需要配置swagger

  1.Install-Package Swashbuckle

  2.SwaggerConfig.cs修改配置

  

 protected static string GetXmlCommentsPath()
        {
            return System.String.Format(@"{0}\bin\WebApiSwagger.XML", System.AppDomain.CurrentDomain.BaseDirectory);
        }

  3.c.IncludeXmlComments(GetXmlCommentsPath());注释打开

  4.修改WebApplication Build 和步骤5一致。PS:如果用来HELP,需要将helpconfig里面的输出注释掉

7.Json格式输出:

Webapiconfig.cs里面config.Formatters.Remove(config.Formatters.XmlFormatter);

// 对 JSON 数据使用混合大小写。驼峰式,但是是javascript 首字母小写形式.
            config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new  CamelCasePropertyNamesContractResolver();
            // 对 JSON 数据使用混合大小写。跟属性名同样的大小.输出
            //config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();

 或者Action方法自己添加返回格式:

public IHttpActionResult GetLeading(string s_xiangmubh) {
            this.Configuration.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();
            try
            {
                
                var apply = new ApplyMeterDAL();
                var res = apply.GetLeading(s_xiangmubh);
                
                return this.Ok(new { code = 0, message = string.Empty, data = res.Select(p => new LeadingFormInfo { CaliberId = p.CaliberId, MeterModelId = p.MeterModelId, ProducerId = p.ProduceId, RequestNumber = p.Count }) });
            }
            catch (Exception e)
            {
                return this.Ok(new { code = -1, message = e.Message,data=new List<LeadingFormInfo>() });
            }
        }

 

8.Json跨域:

  1.install-package Microsoft.AspNet.WebApi.Cors

  2.WebApiConfig里面添加代码:config.EnableCors(new EnableCorsAttribute("*", "*", "*")); //需引用System.Web.Http.Cors

9.配置log4net

  1. install-package log4net

  2.Web.config里面添加

  

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>



<log4net>
    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="Log\log" />
      <param name="AppendToFile" value="true" />
      <param name="StaticLogFileName" value="false" />
      <param name="DatePattern" value="yyyyMMdd&quot;.txt&quot;" />
      <param name="RollingStyle" value="Date" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
      </layout>
    </appender>

    <logger name="Csm.Logger">
      <level value="ALL" />
      <appender-ref ref="RollingFile" />
    </logger>
  </log4net>

  3.global.aspx里面注册

protected void Application_Start()
        {
            var logCfg = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "Configs/log4net.config");
            log4net.Config.XmlConfigurator.ConfigureAndWatch(logCfg);
            GlobalConfiguration.Configure(WebApiConfig.Register);
        }

 

10.webapi输出时间类型数据格式

//配置返回的时间类型数据格式  
            GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.Converters.Add(
                new Newtonsoft.Json.Converters.IsoDateTimeConverter()
                {
                    DateTimeFormat = "yyyy-MM-dd HH:mm:ss"
                }
            );  

 11.文件上传限制配置 

maxRequestLength,maxAllowedContentLength允许文件上传大小多少的配置
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" maxRequestLength="2147483647"  />
    
  </system.web>


  <system.webServer>
     <security>
      <requestFiltering >
        <requestLimits maxAllowedContentLength="2147483647" ></requestLimits>
      </requestFiltering>
    </security>
 </system.webServer>

 

posted @ 2017-08-23 14:55  汪汪汪~~  阅读(2599)  评论(0编辑  收藏  举报