webapi 文件正由另一进程使用_webapi call another webapi - CSDN
精华内容
参与话题
  • if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force }

    环境搭建

    • ubuntu18.04
    • NetCore3.1
    • Nginx
    • pm2
    • .NetCoreSDK安装

    安装源

    wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    
    sudo dpkg -i packages-microsoft-prod.deb
    

    安装sdk,具体哪个版本可以根据自己的喜好.
    首先更新安装源

    1. apt-get update
    2. apt-get install software-properties-common
    3. sudo add-apt-repository universe
    4. sudo apt-get install apt-transport-https
    5. sudo apt-get install dotnet-sdk-3.1

    安装完成执行

    dotnet --info

    命令查看安装的SDK信息
    在这里插入图片描述

    .Nginx安装

    因为.NetCore是自宿主,所以我们需要一个反向代理web服务器来给我的kestrel做反向代理

    安装命令

    sudo apt-get install nginx
    

    启动命令

    sudo service nginx start
    

    安装成功后直接访问服务器地址,若出现下图则nginx安装成功
    在这里插入图片描述

    PM2进程守护安装

    PM2是一个nodejs进程高级工具,用来守护 .NET Core 进程是没有问题,最主要的原因,它没有繁琐的安装和配置,非常适合初学者。
    PM2依赖nodejs,所以我们先需要安装nodejs。

    更新apt-get

    apt-get update
    

    安装node.js

    apt-get install nodejs
    

    安装npm

    apt-get install npm
    

    安装PM2

    npm install -g pm2
    

    设置开机启动

    pm2 startup
    

    安装成功以后使用

    pm2 --help

    命令来检查是否安装成功,出现下图则安装成功
    在这里插入图片描述
    开始部署
    本地新建一个webapi项目,添加一个接口并打印一句话

    using Microsoft.AspNetCore.Mvc;
    
    namespace api.Controllers
    {
        [Route("api/[controller]")]
        [ApiController]
        public class ValuesController : ControllerBase
        {
            [HttpGet("print")]
            public string Print()
            {
                return "hello .NetCore";
            }
        }
    }
    

    修改端口为5002

    using Microsoft.AspNetCore;
    using Microsoft.AspNetCore.Hosting;
    
    namespace api
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                CreateWebHostBuilder(args).Build().Run();
            }
    
            public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
                WebHost.CreateDefaultBuilder(args)
                    .UseUrls("http://localhost*:5002")
                    .UseStartup<Startup>();
        }
    }
    

    发布我们的项目,然后在ubuntu的home文件下新建一个webapi文件夹并把发布文件copy到这里。
    在这里插入图片描述
    使用

    cd /home/webapi

    命令进入我们发布文件夹下。

    使用

    dotnet CORE.WEBERP.dll

    命令运行我们刚才的项目
    在这里插入图片描述

    可以看到我们的接口是可以访问的,到这里我们已经完成了在ubuntu上部署一个.NetCore的项目了。
    但是我们需要一直在这里看着这个程序不被关闭吗?显然是不可能的,现在就需要pm2登场了,用pm2来守护我们的.netCore 程序。
    执行

    pm2 start “dotnet api.dll” --name api

    命令就可以让pm2来帮助我们守护啦。就是这么简单,没有繁琐的配置。
    在这里插入图片描述

    使用

    pm2 ls

    命令可以看到pm2正在守护程序的列表。

    那么问题又来了,直接把服务暴露在外并不是很好的选择,且无法做负载。所以我们需要配置nginx来给我们的kestrel做反向代理。
    执行

    vim /etc/nginx/sites-available/default

    命令来修改默认的配置文件,注释掉原有所有配置,新增如下配置,并保存。

    server {
        listen 80;
        listen [::]:80;
        location / {
        	proxy_pass http://localhost:5002;
        }
    }
    

    使用

    sudo service nginx reload

    命令来优雅重启nginx,并重新载入配置文件。

    使用80端口来调用我们的接口。
    在这里插入图片描述

    展开全文
  • 最近在写.Net Core的API,由于之前没接触过Core,所以自己的想法很简单,感觉和.Net都是差不多的东西,发布部署还是按.Net的那一套来,可谓是困难重重,走了不少弯路。 也没什么漂亮的词语,也不是技术大牛,就是抱...

            最近在写.Net Core的API,由于之前没接触过Core,所以自己的想法很简单,感觉和.Net都是差不多的东西,发布部署还是按.Net的那一套来,可谓是困难重重,走了不少弯路。

            也没什么漂亮的词语,也不是技术大牛,就是抱着学习技术的态度,随手写写这一套流程,以及遇到的问题跟解决方法。

            

    一、安装服务器环境

            IIS  Path-->Control Panel\All Control Panel Items\Programs and Features

            

            没细致研究,全装了~


    二、发布API

    1.选择File System,设置Target location.

    2.配置文件


            我用的VS2017,设置好了发布就可以~


    三、添加网站到IIS

    1.添加WebSite,填写Site name和Physical path.


    2.设置该网站的Application Pools, .NET CLR version设置为 No managed Code.



    四、服务器环境搭建及问题解决

    1.安装.NET Core SDK和AspNetCoreModule托管模块

    ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行


    链接:SDK 密码:g02o

    链接:托管模块 密码:8mxu

    2.错误502.5一般就是没装.NET Core SDK和AspNetCoreModule托管模块


    3.另一个比较奇葩的错误


    解决方法:看下你的发布文件夹里面是否缺少WebApi.xml,如缺少请手动复制到服务器指定路径下。

    4.如果遇到其他问题请查看日志或者查看官方给出的解决方案(官方解决方案地址


    展开全文
  • 理解WebKit和Chromium: Content API和CEF3

    万次阅读 热门讨论 2012-12-23 21:09:03
    # Content API及CEF3 ## 概述 相信你一定看过下面这张图(没看过的话去上官网阅读一下“how chromium displays web pages”)。 这是幅介绍页面如果被渲染和显示的概括性的层次结构图。Renderer进程

    转载请注明原文地址:http://blog.csdn.net/milado_nju/article/details/7455373

    # Content API及CEF3

    ## 概述

    相信你一定看过下面这张图(没看过的话去上官网阅读一下“how chromium displays web pages”)。


    这是一幅介绍页面如果被渲染和显示的概括性的层次结构图。Renderer进程和Browser进程通过IPC来交换信息,具体的设施就是RendererHost和Renderer等相关类,其作用是把网页的内容(content)渲染成Tab的显示内容。一个Tab可能会包含多个页面的内容,因而它会管理Tab中的多个页面内容。Tab contents之上就是浏览器,Tab contents会把内容绘制在browser窗口的一个标签中。

    Chromium把RendererHost及其以下部分称为Content,同时包括还有很多对HTML5功能实现的支持,contentAPI基于此两部分,包装成为一套公开的接口。Tab contents及以上部分称为Chrome(chrome的原意即是包装在网页内容之上的框)。浏览器中相关的功能仅仅在content API之上才有,而不存在于content API中。

    上面的这个架构看起来没什么问题,但是,这对希望把chromium渲染网页的功能包装成接口,被内嵌到任何其他应用程序来说,就有着明显地不足。第一,在WebKit chromium移植中提供了一套公开的接口,但是它在renderer进程,没有很多chromium的提供的高级功能;第二,Chromium在browser进程中没有提供任何公开的接口,也就是说,如果基于RendererHost等开发一套嵌入式的接口,代价将是非常巨大的,因为这些内部使用的类及其接口是经常变动的(注意,确实变化的非常快)。


    上图介绍的是WebKit的chromium移植接口和Content API在整个栈中所在的层次,“API boundary”是原来的WebKit的chromium移植所提供的公开接口,“Content API”表示的是新的content API所在的层次。层次上的向上移动带来了使用者的稳定性,HTML5功能的支持,GPU硬件加速功能,沙箱模型等的支持。这里稍微不同的地方是浏览器的功能在Content API之上,所以图片中的Application应该去除掉这一部分。图片来源于WebKit官网,略有修改。

    下面我们来看一下chromium官网上所宣称引入Content API的两条原因:

    1)  让Chrome的开发者们摆脱content内部的复杂工作原理和机制;

    2)  给content和chrome划分清楚的界限来帮助开发者或者嵌入式的使用者们。

    在了解了相关背景之后,上面的解释就相当简单明了了。

    为了方便测试,chromium中有一个基于content api的简单测试程序content shell。它非常的简单,仅仅是一个壳,调用了content API并实现了部分必需的回调接口,可以用来测试和其他一些简单的功能。

    CEF全称chromium embeddedframework,其目的是提供一套嵌入式的接口,最初的版本是基于早期的RendererHost和chrome浏览器的很多内部接口开发而来的,在新的CEF3中,其主要依赖于公开的Content API来实现的。

    为了清晰地了解它们之间的的关系,下图描述了WebKit, content API,浏览器,content shell和CEF3的层次关系。Chrome浏览器,content shell和CEF3三者都是基于content API开发的,它们只是有不同的实现,服务于不同的应用场景而已。

    后面的章节将重点介绍content API和CEF3,因content shell比较简单,故略过。


    ## Content API

    Content API不仅提供了公开和稳定的接口,而且它从诞生以来一个重要的目标就是要支持所有的HTML5功能和GPU硬件加速功能,这可以让它的使用者们不需要很多的工作即可以得到好的HTML5支持和硬件加速机制。同时,借助于现有的多进程架构,一些chromium中的新功能例如沙箱模型等也在其中得到了支持。

    下面详细介绍一下Content API包含哪些部分。

    Content API的相关的接口定义文件均在content/public目录下,按照功能分成六个部分:每个部分的接口一般也可以分成两类,第一类是嵌入者(embedder,这里可以是Chrome浏览器,CEF3和content shell)调用的接口,另一类是嵌入者实现的回调接口,被content API的内部实现所调用,例如参与实现的逻辑,事件的监听等。

    1)  App

    这部分主要是跟应用程序或者进程的创建和初始化相关。

    第一类,主要包括创建进程的初始化函数,content的初始化和关闭;

    第二类,主要是实现回调函数,告诉嵌入者启动完成,进程启动,进程推出,沙盒模型初始化开始和结束等等。

    2)  Browser

    第一类包括,对一些HTML5功能和其他一些高级功能实现的参与,例如resource,sensor,notification, speech recognition, web worker, download, web intents,等等;

    第二类包括ContentBrowserClient,主要是实现部分逻辑,被Browser端(或者进程)调用,还有就是一些事件的回调函数.

    3)  Common: 主要定义一些公共的接口,被render和browser共享,例如一些进程相关,参数,gpu相关等等

    4)  Plugin: 仅有一个接口告诉嵌入者plugin进程被创建了

    5)  Render

    第一类包含获取RenderThread的消息循环,注册v8 extension,计算JavaScript表达式等等

    第二类包括ContentRendererClient,主要是实现部分逻辑,被Browser端(或者进程)调用,还有就是一些事件的回调函数

    6)  Utility: 工具类接口,主要包括让嵌入者参与content API中的线程创建和消息的过滤。

     

    ## CEF和CEF3

    早在content API出现之前,CEF便已出现,其目的是提供嵌入式的框架,可以让渲染网页的功能方便地嵌入到应用程序之中。CEF依赖于chromium浏览器,所以chromium对HTML5的支持和性能上的优势,都得以继续在CEF中体现出来。但是,根据实际测试的结果来看,情况可能并非如此。首先,其对GPU硬件加速的支持不是很好,这时因为它会把GPU内存读回到CPU内存,速度非常慢;再次,因为基于chromium的内部结构,而它们经常变化,所以CEF经常需要发生变化,这对维护来说是件很头痛的事。
    得益于content API的出现,CEF的作者也基于它开发了CEF3。CEF3在保持其提供的接口基本不变的情况下,借助content API的能力,其对HTML5和GPU硬件加速提供了较好的支持。它的核心变为调用content API的接口和实现content API的回调接口,来组织和包装成CEF3自己的接口以被其他开发者所使用。其好处是,CEF3的接口相对比较简单,使用起来方便,同时不需要实现很多content API的回调接口,但是缺点就是,如果需要使用content API的很多功能,CEF3的接口可能做不到,或者说只能通过直接调用content API接口来完成。

    下面简单介绍一下CEF3的接口。

    CefClient:回调管理类,包含5个接口用于创建其它的回调类的对象

    CefLifeSpanHandler: 回调类,用于控制popup对话框的创建和关闭等操作

    CefLoadHandler: 回调类,可以用来监听frame的加载开始,完成,错误等信息

    CefRequestHandler: 回调类,用于监听资源加载,重定向等信息

    CefDisplayHandler: 回调类,用于监听页面加载状态,地址变化,标题等得信息

    CefGeolocationHandler: 回调类,用于CEF3向嵌入者申请geolocation的权限

    CefApp: 与进程,命令行参数,代理,资源管理相关的回调类,用于让CEF3的调用者们定制自己的逻辑

    CefBrowser: renderer进程中执行浏览相关的类,例如前进,后退等

    CefBrowserHost: browser进程中的执行浏览相关的类,其会把请求发送给CefBrowser

    CefFrame: 表示的是页面中的一个Frame,可以加载特定url,在该运行环境下执行JavaScript代码等得。

    V8:CEF3提供支持V8extension的接口,但是这有两个限制,第一,v8 extension仅在Renderer进程使用;第二,仅在沙箱模型关闭时使用。

     ## Content API和WebKit2

    Content API和WebKit2的接口都是基于跨进程的结构的,按我个人的理解,它们是互相影响而又互相吸收对方的优点,它们具有相同点,又有不同点:

    1)  Content API提供的是一套基于跨进程的架构模型(当然它也可以不是多进程的),这有利于browser(UI)进程的稳定,这同样对WebKit2适用;

    2)  Content API不仅如此,它里面包含chromium对于HTML5,GPU硬件加速,和沙箱模型等功能的支持,而WebKit2可能并非如此;

    3)  Content API是chromium提出的接口,而WebKit2是一个更加开放和公开的接口,被众多的WebKit移植所使用。

     ## 源文件目录

    Content/public/app ,Content/public/browser, Content/public/render, Content/public/common,

    Content/public/plugin, Content/public/utility

             ContentAPI所包含的相关的目录,里面包含所有的接口

    ## 参考文献

    1.      http://www.chromium.org/developers/content-module/content-api

    2.      http://code.google.com/p/chromiumembedded/

    3.      http://trac.webkit.org/wiki/WebKit2

     By yongsheng@chromium.org

     

    展开全文
  • 1.已知原端Site,Web,Library,目的端Site,Web 基础功能 1.目的端检查Library是否存在,不存在需要创建 2.library级别数据包括security,column,contenttype,基本column与contenttype 3.Library下数据包括文件,...

    前提
    1. 已知原端Site,Web,Library,目的端Site,Web

    基础功能
    1. 目的端检查Library是否存在,不存在需要创建
    2. library级别数据包括security,column,content type,基本column与content type
    3. Library下数据包括文件,folder,文件,folder包括各自的security,column value以及content type
    4. 备份数据使用XML格式进行组织
    5. SharePoint操作使用Server API

    高级功能
    1. 使用备份还原进程,备份数据通过使用WCF传输
    2. 文件级别使用多线程备份还原|文件还原前需要检查目的端folder是否已经还原结束
    3. 学习使用SharePoint Client API备份还原数据

    下面几篇博客是将完成这个功能的过程以及代码继续下来,主要是为了整理自己作为一个初学者做过的东西,来复习并且整理

    1.源端Document Library 文档库文件备份到本地一个确定文件夹下面,并且在名为Source Path的Column记录文件备份的路径

    2.源端Document Library 文档库文件夹以及文件以目录树的结构写入XML文件

    3.目的端读取XML文件,按照目录树的结构还原文件夹以及文件的属性和内容

    4.目的端备份Document Library文档库数据,使用WCF传输数据

    展开全文
  • web开发时进程遇到需要编写一些小的测试用例用于测试api接口是否可用,此时使用Spring框架的开发者大多会想到使用RestTemplate。本文实现使用RestTemplate发起GET请求,同事设置GET请求的http头的示例。 1、...
  • Electron框架学习笔记

    万次阅读 2016-04-14 13:49:43
    electron学习笔记
  • API Monitor(API监控工具)

    万次阅读 2015-04-22 15:04:51
    API Monitor是个免费软件,可以让你监视和控制应用程序和服务,取得了API调用。 它是个强大的工具,看到的应用程序和服务是如何工作的,或跟踪,你在自己的应用程序的问题。 产品特点 64位支持  API监控...
  • 随着ASP.NET Core 2.0发布之后,原先运行在Windows IIS中的ASP.NET WebApi站点,就可以跨平台运行在Linux中。我们有必要先说一下ASP.NET Core。 ASP.NET Core 是新一代的 ASP.NET,第次出现时的代号为 ASP.NET ...
  • HTML5 让 HTML 这个一度单纯的置标语言焕发出成熟的魅力,使之成为 Web 开发者的强力工具,W3C 近日又推出个新草案,HTML5 File API,这个 API 将让大大改善基于 Web文件上传操作,甚至可以实现直接将文件从...
  • openstack nova api模块分析

    万次阅读 2013-11-25 10:58:35
    原文: https://www.ibm.com/developerworks/community/blogs/e93514d3-c4f0-4aa0-8844-497f370090f5/entry/openstack_nova_api?lang=en 本文翻译IBM openstack技术博客。参杂部分个人理解,记录下学习...Nova API
  • HTML5基础,第3部分:HTML5 API的威力

    万次阅读 2012-09-06 17:32:51
    ... (译者注:由于yeeyan编辑器对文章中的标签做解析的原因,我在每个标签的,我会写成,以便其能够在文章中...应用编程接口(application program interface,API)是访问个软件应用的编程指令和标准的集合。通过使用
  • 服务器并发处理能力

    万次阅读 2011-11-30 14:42:09
    序:  这里指的服务器是指提供HTTP服务的服务器,人们通常衡量web服务器能力的大小为其在单位时间内能处理的请求数的多少。 3.1 吞吐率  Web服务器的吞吐率是指其单位时间内所...因为这种请求性质的不同,W
  • 到目前为止,“使用C#开发HTTP服务器”这个系列系列文章目前已经接近尾声了,虽然我们在服务器功能的完整性(如支持并发、缓存、异步、Htts等)上没有再继续深入下去,可是我们现在已经...因为写博客更多的是种“记录
  • 在这篇文章我展示如何承载我们的 Internet 信息服务 (IIS) 服务器上的 ASP.NET Web API。当我们想要我们 Web API 应用程序在本地主机托管,这非常有用。 Internet 信息服务 (IIS) IIS 是互联网信息服务的首字母...
  • Electron前端开发桌面程序--入门篇

    万次阅读 2018-06-15 13:31:24
    前言前端开发桌面程序这个概念已经出现有段时间了,这项技术也已经走向成熟,Github上nw和光electron的star就差不多有10w颗星了,github也衍生出了很多开源的桌面项目俨然成了个热门项目。既然这么热,那就个...
  • nginx[+spawn-fcgi]+flup+webpy服务搭建

    万次阅读 2013-11-26 11:20:36
    在开始webpy搭建之前,有必要熟悉一下什么事fastcgi,因为搭建环境时都是使用这个模式去运行webpy程序的,具体的fastcgi描述可以参考各种百科;fastcgi协议官网(http://www.fastcgi.com/drupal/)上面描述一些基础...
  • 另一种情况是,CLR需要内存时,而却系统却不能提供,也会抛出该异常. 但此时,我们的应用程序是不能捕获该错误的.内存溢出(OutOfMemoryException)的调试分析32位操作系统的寻址空间是4G,其中有2G被操作系统
  • 今天早上打开项目突然发现报了如标题描述的问题。...第种方法:用记事本或者其他编辑器打开项目中以.csproj结尾的文件,把<WebProjectProperties>节点下的<AutoAssignPort>设置为True,<Developme...
  • openstack学习之各种API

    千次阅读 2014-06-12 10:36:38
    初看openstack代码,会发现里边有各种和api相关的文件和目录,本文以nova为例,来分析一下这些api的组织与功能。 nova中和api有关的文件/目录夹有: api目录 多个rpcaip.py 多个api.py 本文不区分api和...
1 2 3 4 5 ... 20
收藏数 112,666
精华内容 45,066
关键字:

webapi 文件正由另一进程使用