webapi设置html设置首页 - CSDN
精华内容
参与话题
  • 开启静态网页 Startup.Configure: ...设置主页 Startup.Configure: DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions(); defaultFilesOptions.DefaultFileNames.Clear(); defaul...

    开启静态网页

    Startup.Configure:

    app.UseStaticFiles();

    设置主页

    Startup.Configure:

    DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
    defaultFilesOptions.DefaultFileNames.Clear();
    defaultFilesOptions.DefaultFileNames.Add("index.html");
    app.UseDefaultFiles(defaultFilesOptions);

    重要提示,代码是有顺序的:

    UseDefaultFiles-UseStaticFiles-UseMvc

    汇总:

    Startup.Configure:

                DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
                defaultFilesOptions.DefaultFileNames.Clear();
                defaultFilesOptions.DefaultFileNames.Add("index.html");
                app.UseDefaultFiles(defaultFilesOptions);
    
                app.UseStaticFiles();
    
                app.UseMvc();

    跨域

    Startup.Configure:(core 3.0 ConfigureServices中需包含services.AddControllers();)

    app.UseCors(corsPolicyBuilder => corsPolicyBuilder.AllowAnyMethod().AllowAnyOrigin());

    Json保持原始大小写

    Startup.ConfigureServices:

    2.0:

    <PackageReference Include="Newtonsoft.Json" Version="12.0.2" />

    services.AddMvc().AddJsonOptions(options => options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver());

    3.0 方案1修改原生方法:

                services.AddControllers().AddJsonOptions(options =>
                {
                    options.JsonSerializerOptions.DictionaryKeyPolicy = null;
                    options.JsonSerializerOptions.PropertyNamingPolicy = null;
                });

    3.0 方案2用NewtonsoftJson替换原生方法:

    <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="3.0.0" />

                services.AddControllers()
                //原生Json服务中文、变量、注释支持差,这里切换为Newtonsoft提供的Json服务,必须引用Microsoft.AspNetCore.Mvc.NewtonsoftJson,引用Newtonsoft.Json此处无效
                .AddNewtonsoftJson(options =>
                {
                    //保持Json属性/变量大小写
                    options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver();
                    // 忽略循环引用
                    options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
                    // 设置时间格式
                    options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
                    // 如字段为null值,该字段不会返回到前端
                    // options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; 
                });

    添加MIME

    Startup.Configure:

                var provider = new FileExtensionContentTypeProvider();
                provider.Mappings[".osm"] = "application/octet-stream";
                app.UseStaticFiles(new StaticFileOptions()
                {
                    ContentTypeProvider = provider
                });

     

    展开全文
  • c# webapi修改默认启动项

    千次阅读 2015-10-09 16:19:58
    c# webapi修改默认启动项 如我原来的webapi,默认启动的是一个html,这个是写在web.config里               现在把这个去掉,在global.cs中加如下代码 Application_Start RouteTable.Routes....

    c# webapi修改默认启动项

    如我原来的webapi,默认启动的是一个html,这个是写在web.config里

      <location path="test/welcome.html">
        <system.webServer>
          <staticContent>
            <clientCache cacheControlMode="DisableCache" />
          </staticContent>
        </system.webServer>
      </location>

    现在把这个去掉,在global.cs中加如下代码

    Application_Start

    RouteTable.Routes.MapHttpRoute(
                       name: "DefaultApi",
                       routeTemplate:"{controller}/{action}/{id}",
                       defaults: new { controller = "DB", action = "CreateDb", id = "1" }
                    );
    /DB/CreateDB 就是想默认运行的
    展开全文
  • WebAPI CORS 支持跨域POST

    万次阅读 2015-07-07 22:40:39
    网上一般能找到的都是通过Microsoft.AspNet.WebApi.Cors来实现CORS,这是通过dll的方式,然后还有一种是通过config的方式 1、dll方式实现CORS 这种方式的好处就是控制精细,可以对同一个站点下的action分别赋予不同...

    网上一般能找到的都是通过Microsoft.AspNet.WebApi.Cors来实现CORS,这是通过dll的方式,然后还有一种是通过config的方式

    1、dll方式实现CORS

    这种方式的好处就是控制精细,可以对同一个站点下的action分别赋予不同的CORS设置,具体怎么实现这里就不多说了,不了解的可以看http://www.cnblogs.com/artech/p/cors-4-asp-net-web-api-05.html
    然后这里记录下实际可能会出现的问题

    a) System.Web.Http未能加载

    这个可以直接下载dll,然后添加到项目引用中

    b) 尝试访问安全关键类型

    这是因为System.Web.Http版本不一致,本人做测试时Microsoft.AspNet.WebApi.Cors版本为5.2.3,而默认添加的System.Web.Http为4.0版本,通过Nuget重新下载个匹配版本,然后将引用调整为5.2.3版本的引用即可修复问题

    <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net45" />


    c) 默认appsetting配置导致的错误

    http://diaosbook.com/Post/2013/12/27/tips-for-aspnet-webapi-cors备注,个人测试时用的Vs2013未遇到此种问题)


    2、config方式实现CORS

    在Web.config的system.webServer配置节下增加配置,这种方式的好处是简单,只要在这里加了这个配置,那么所有的api都可以按同一种规则支持跨域请求

        <httpProtocol>  
          <customHeaders>  
            <add name="Access-Control-Allow-Origin" value="*" />  
            <add name="Access-Control-Allow-Headers" value="*" />  
            <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" />  
          </customHeaders>  
        </httpProtocol> 

    如果是HTTP Basic Access authentication,似乎还需要个<add name="Access-Control-Allow-Credentials" value="true" />,此处还未验证

    最后补充个Cors相关说明:http://www.cnblogs.com/artech/p/cors-4-asp-net-web-api-02.html

    以及官方链接:http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

    展开全文
  • c# webapi POST 参数解决方法

    万次阅读 2015-10-21 14:57:24
    c# webapi POST 参数解决方法:简单类型 复杂类型

    HttpWebRequest POST请求webapi:如果参数是简单类型,比如字符串(注意,拼接的字符串要HttpUtility.UrlEncode才行,否则服务端会丢失特殊字符&后面的数据)

    要点:如下代码统一设置为:ContentType = "application/x-www-form-urlencoded";

    服务端代码1:URL格式为 POSTapi/Values

    public string Post([FromBody] string value)

    则客户端Post的数据:拼接的字符串必须以 =开头,否则服务端无法取得value。例如:=rfwreewr2332322232 或者 {'':value}

    服务端代码2:URL格式为 POST api/Values?value={value}

    public string Post(string value)

    则客户端Post的数据:需要url里拼接出KeyValue这样的数据

    服务端代码3:URL格式为 POST api/Values

    public string Post()

    则客户端Post的数据:无要求。例如:key=rfwreewr2332322232。

    服务端:可以用HttpContext.Current.Request.InputStream或者HttpContext.Current.Request.Form[0]都可以获取


    如果post的参数类型比较复杂,则需要自定义类

    要点:如下代码统一设置为:ContentType = "application/json";

    服务端代码1:URL格式为 POST api/Values

    public string Post([FromBody] Model value)或者 public string Post(Model value)

    则客户端Post的数据:{\"id\":\"test1\",\"name\":\"value\"}。服务端会自动映射到对象。

    提交代码如下:

                HttpWebRequest wReq = (HttpWebRequest)WebRequest.Create("http://localhost:37831/api/Values");
                wReq.Method = "Post";
                //wReq.ContentType = "application/json";
                //wReq.ContentType = "application/x-www-form-urlencoded";
                wReq.ContentType = "application/json";
    
                //byte[] data = Encoding.Default.GetBytes(HttpUtility.UrlEncode("key=rfwreewr2332322232&261=3&261=4"));
                byte[] data = Encoding.Default.GetBytes("{\"id\":\"test1\",\"name\":\"value\"}");
                wReq.ContentLength = data.Length;
                Stream reqStream = wReq.GetRequestStream();
                reqStream.Write(data, 0, data.Length);
                reqStream.Close();
                using (StreamReader sr = new StreamReader(wReq.GetResponse().GetResponseStream()))
                {
                    string result = sr.ReadToEnd();
    
                   
                }
    服务段代码如下:

            // POST api/values
            //public string Post()
            //{
            //    FileInfo fi = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log.txt");
            //    StreamWriter sw = fi.CreateText();
            //    StreamReader sr = new StreamReader(HttpContext.Current.Request.InputStream);
            //    sw.WriteLine("1:" + sr.ReadToEnd()+"--"+ HttpContext.Current.Request.Form[0]);
            //    sw.Flush();
            //    sw.Close();
            //    return "{\"test\":\"1\"}";
            //}
    
            // POST api/values
            public HttpResponseMessage PostStudent(Student student)
            {
                FileInfo fi = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "log.txt");
                StreamWriter sw = fi.AppendText();
    
                sw.WriteLine("2:" + student.id);
                sw.Flush();
                sw.Close();
                HttpResponseMessage result = new HttpResponseMessage { Content = new StringContent("{\"test\":\"2\"}", Encoding.GetEncoding("UTF-8"), "application/json") };
                return result;
            }


    这篇文章里有的方法也不错:http://www.cnblogs.com/rohelm/p/3207430.html



    展开全文
  • WebAPI实现跨域请求

    万次阅读 热门讨论 2018-05-20 21:04:14
    一、跨域问题的由来 目前项目实现前后端分离,所以就会那么此时前端和后端分别在...2.前后端分离:现在我们的积分系统前端采用angular,后端采用webapi,所以整个系统是部署在不同的小项目中的,此时我们称之为前...
  • python学习——使用webAPI

    万次阅读 2017-10-11 15:45:03
    1、Web API是网站的一部分,用于与使用非常具体的URL请求特定信息的程序交互。这种请求称为API调用。请求的数据将以易于处理的格式(JSON或CSV)返回。2、GitHubGitHub是一个让程序员能够协作开发项目的网站。GitHub...
  • .NET CORE WebAPI 增加默认页面功能

    千次阅读 2019-07-12 09:22:09
    因为.NET CORE WebAPI 是基于MVC 但是它主要是提供数据结构支持不提供VIEW操作,所以默认是不具备默认页面显示功能的;如果需要显示默认页面请增加代码到 Startup 类中。 核心配置代码 public class Startup { ...
  • ASP.NET Web API实现缓存的2种方式

    千次阅读 2016-09-13 21:27:52
    在ASP.NET Web API中实现缓存大致有2种思路。一种是通过ETag, 一种是通过类似ASP.NET MVC中的OutputCache。 通过ETag实现缓存 首先安装cachecow.server install-package cachecow.server 在WebApiConfig中。 ...
  • WebAPI——cookie与session遇到的问题

    千次阅读 2017-02-08 20:42:12
    这两天要做一个用户登陆验证的接口,用MVC这种action和view结合的做的话比较好做,但是直接使用webapi做的过程中遇到了不少困难,这里和大家分享一下== 一、WebAPI中session与cookie操作 由于两者用的框架不一样...
  • 为了方便测试刷新Token,服务端设置的access_token过期时间10秒,一般设置20分钟,可根据需要进行设置。 采用的resource owner password credentials,其他三种授权模式大同小异。 Demo中没有把授权服务和Api服务...
  • ASP.NET WebAPI开发实例

    万次阅读 多人点赞 2018-09-12 16:32:14
    一、环境搭建 打开VS2012, IDE版本为Visual Studio Ultimate 2012 文件 - 新建项目 - Visual C# - Web – ASP.NET MVC4 Web 应用程序...选择联机 – 搜索webapi – 安装webapi2.2 – 安装webapi2.2helppage ...
  • .NET (C#)下简单的WebAPI构建、访问控制、发布、本地访问0.前言1.WebAPI2.WebAPI和MVC的区别3.如何创建一个简单WebAPI4.发布网站(WebAPI)5.本地IIS访问6.后记 0.前言 问题来源是实际使用中遇到的问题,公司希望...
  • 很久前我曾经提到过Web Speech API,现在Chrome刚刚发布的25版本已经为桌面和Android提供了对此API的支持,这对Web开发者来说无疑是一个具有里程碑意义的事件,因为我们可以直接在Web App中原生使用语音识别技术,...
  • c# WebApi之解决跨域问题:Cors

    千次阅读 2017-11-27 14:57:49
    二、CORS解决跨域问题跨域资源共享( CORS )机制允许 Web 应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行。它解决跨域问题的原理是通过向http的请求报文和响应报文里面加入相应的标识告诉浏览器它能...
  •  创建 Web API 项目在这里我们使用VS2013, .NET 4.5.1创建一个Web API 2的项目选择项目WEB API模板, 在最下方的MVC主要是默认会自带微软的API Helper, 使用MVC发布在这里不实用安全 这样我们一个项目就初始化好了,...
  • asp.net WebApi 返回html页面

    千次阅读 2019-08-07 09:52:09
    asp.net WebApi 返回html页面 public HttpResponseMessage Get(string id) { if (id.Contains("OID=")) { id = id.Replace("OID=", ""); } ...
  • 怎么用高德地图web API在地图上定位到自定义的位置 一般情况下都是定义到自己的位置 怎么定位到自定义位置
  • Web API使用教程

    万次阅读 热门讨论 2018-04-21 11:59:38
     Web Api,网络应用程序接口。它包含了广泛的功能,网络应用通过API接口,可以实现存储服务、消息服务、计算服务的能力,利用这些能力可以进行开发出强大功能的web应用。简单来说,就是一个接口,比如说,我们要做...
  • ASP.NET MVC Web API 定义 Post 方法,HttpClient 使用 JsonConvert.SerializeObject 传参进行调用,比如 Web Api 中定义 AddProduct 方法,参数为 Product 的各类信息(id、name等),然后操作完之后返回处理信息。...
  • 学习http://www.cnblogs.com/cgzl/p/7637250.html的笔记。 我使用的环境: Windows 10 64位 Visual Studio Enterprise 2017 V15.7.3 .net core 2.1.302 下载地址:https://pan.baidu.com/s/1iCiZEnKIJ...
1 2 3 4 5 ... 20
收藏数 462,746
精华内容 185,098
热门标签
关键字:

webapi设置html设置首页