ASP.NET API 部署发布注意事项

一.需要转换为JSON格式

在目录[App_Start]-[WebApiConfig.cs]文件中增加代码:

 #region 设置默认返回JSON格式

            GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear();
            //默认返回 json  
            GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings.Add(
                    new QueryStringMapping("datatype", "json", "application/json"));
            //返回格式选择 datatype 可以替换为任何参数   
            GlobalConfiguration.Configuration.Formatters.XmlFormatter.MediaTypeMappings.Add(
                    new QueryStringMapping("datatype", "xml", "application/xml"));

#endregion

示例图:

image.png

image.png


二.需要屏蔽默认主页和帮助页

重写http过滤器/拦截器,拦截每一个发来的请求,应用到help页面的class上。

指定条件编译内容,从此即可保持代码一致。

1.写个拦截器,放在任意地方

using System.Web.Mvc;

namespace webApi.Util
{
    public class CustomAuthorizeAttribute : AuthorizeAttribute
    {

        public override void OnAuthorization(AuthorizationContext filterContext)
        {
       //如果是在!testV条件下,则将一切请求(指的是应用了CustomAuthorize的控制器class或method)直接重定向到404页面;反之,执行默认行为
#if !testV 
            filterContext.Result = new RedirectResult("~/404.html");
#endif
        }
    }
}


2.分别将此拦截器应用到HomeController.cs上和HelpControlle.cs上。

using System.Web.Mvc;
using webApi.Util;

namespace webApi.Controllers
{
    /// <summary>
    /// 
    /// </summary>
    public class HomeController : Controller
    {
        /// <summary>
        /// 
        /// </summary>
        /// <returns></returns>
    [CustomAuthorize]
        public ActionResult Index()
        {
            return View();
        }
    }
}
using System;
using System.Web.Http;
using System.Web.Mvc;
using webApi.Areas.HelpPage.Models;
using webApi.Util;

namespace webApi.Areas.HelpPage.Controllers
{

    /// <summary>
    /// The controller that will handle requests for the help page.
    /// </summary>

    [CustomAuthorize]
    public class HelpController : Controller
    {
       //略
    }
}

3.如果help页面不需要了,则bundile.cs里的很多文件处理也不需要了的,也应该处理一下。

BundleConfig.cs


using System.Web;
using System.Web.Optimization;

namespace webApi
{
    public class BundleConfig
    {
        // 有关 Bundling 的详细信息,请访问 http://go.microsoft.com/fwlink/?LinkId=254725
        public static void RegisterBundles(BundleCollection bundles)
        {

           //如果是在testV条件下,则执行这些bundles行为;如果不是testV,则相当于这部分代码就不存在
#if testV
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include("~/Scripts/OriginalJs/jquery-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include("~/Scripts/OriginalJs/jquery-ui-{version}.js"));

            bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include("~/Scripts/OriginalJs/jquery.unobtrusive*", "~/Scripts/OriginalJs/jquery.validate*"));

            // 略           
#endif
        }
    }
}

4.执行条件编译即可。

如下图,显然地,testV适用于测试环境,没有testV适用于生产环境。

image.png


参考链接:

https://blog.csdn.net/festone000/article/details/71535181


网友评论(0)