using System; using System.Linq; using System.Net.Http.Formatting; using System.Net.Http.Headers; using System.Text; using System.Threading.Tasks; using System.Web.Http; using System.Xml; using Microsoft.Owin; using Owin; using Swashbuckle.Application; [assembly: OwinStartup(typeof(HH.WCS.Mobox3.Template.Startup))] namespace HH.WCS.Mobox3.Template { public class Startup { public void Configuration(IAppBuilder app) { // 有关如何配置应用程序的详细信息,请访问 https://go.microsoft.com/fwlink/?LinkID=316888 HttpConfiguration config = new HttpConfiguration(); //config.Formatters.Remove(config.Formatters.JsonFormatter); // 添加 XML 格式化器(必须显式配置) //config.Formatters.Add(new XmlMediaTypeFormatter()); // 或更详细配置(可选) var xmlFormatter = new XmlMediaTypeFormatter { UseXmlSerializer = true, // 使用 XmlSerializer 而非 DataContractSerializer SupportedMediaTypes = { new MediaTypeHeaderValue("application/xml") }, }; xmlFormatter.WriterSettings.OmitXmlDeclaration = false; xmlFormatter.WriterSettings.Encoding = Encoding.UTF8; xmlFormatter.WriterSettings.Indent = true; config.Formatters.Add(xmlFormatter); //config.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); config.Formatters.Add(new JsonMediaTypeFormatter()); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); // Web API routes //config.MapHttpAttributeRoutes(); //config.EnableSwagger(c => c.SingleApiVersion("v1", "hh wms api")) // .EnableSwaggerUi(); //config.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); //config.Formatters.Add(new JsonMediaTypeFormatter()); //WebApiConfig.Register(config); // Web API routes config.MapHttpAttributeRoutes(); config.EnableSwagger(c => { c.SingleApiVersion("v1", "hh wms api"); c.IncludeXmlComments(System.AppDomain.CurrentDomain.BaseDirectory + "\\HH.WCS.Mobox3.Template.xml"); c.CustomProvider((defaultProvider) => new SwaggerCacheProvider(defaultProvider, $@"{System.AppDomain.CurrentDomain.BaseDirectory}\\HH.WCS.Mobox3.Template.xml")); c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First()); } ).EnableSwaggerUi(c => { c.InjectJavaScript(System.Reflection.Assembly.GetExecutingAssembly(), "swagger.js"); }); app.UseWebApi(config); } } }