C#进阶-IIS服务器发布ASP.NET项目

对于云服务器,程序员一般不会陌生,如果项目需要发布到现网,那么服务器是必不可缺的一项硬性条件,那么如何在云服务器上部署一个项目,需要做哪些配置准备,下面就由本文档为大家讲解,本篇以 IIS服务器 发布 ASP.NET 项目为例。

asp000 - IIS服务器发布ASP.NET项目


一、准备项目的发布版本

1、检查项目是否可运行

本地用 Visual Studio 打开一个可运行的 ASP.NET 项目,

右键解决方案清理解决方案 => 重新生成解决方案。

如果项目有错误,这里会显示报错。没有错误,则重新生成成功。

asp001 - IIS服务器发布ASP.NET项目

也可以本地直接启动,访问调试看看能不能顺利运行。 


2、打包项目

我们发布 ASP.NET 项目,就是将打包后的项目包复制到在服务器的发布文件夹内,因此,我们需要准备可发布的项目包,这个包通过 Visual Studio 编译生成。

我们用 Visual Studio 打开刚刚验证过的项目, 选中项目的启动模块(名字加粗的模块),鼠标右键,点击发布。

asp002 - IIS服务器发布ASP.NET项目

发布时选择发布文件夹的路径,项目的 Release 版本会生成在这个文件夹里。 

asp003 1024x333 - IIS服务器发布ASP.NET项目

记住发布的目标文件夹位置。

点击发布,项目会开始编译,控制台显示发布状态,发布完成会有提示。
项目发布完成后,打开该文件夹,cwfpublish 是我们的发布文件夹。

asp004 1024x477 - IIS服务器发布ASP.NET项目

把整个文件夹(cwfpublish)复制到云服务器上。

asp005 - IIS服务器发布ASP.NET项目


3、项目包内容介绍

asp004 1024x477 - IIS服务器发布ASP.NET项目

  • bin 目录是应用程序目录,里面默认装的是 所有.cs文件的编译版本(.dll文件),包含每个模块的.dll文件和.pdo缓存文件,每次我们修改 .cs 文件或者引入 nuget 包,bin目录都会发生变化,需要重新发布才能生效;
  • configs 目录一般是存放 log4j.config 等配置文件;
  • css 目录存放前端样式文件;
  • images 目录存放静态图片;
  • js 目录存放前端 JavaScript 代码;
  • Map 目录存放 MyBatis框架 封装的 .xml文件;
  • pages 目录存放前端 .aspx 页面;
  • Template 目录存放模板文件,比如复用频率高的 html模板、邮件模板等等;
  • themes 目录存放静态资源文件(主题类css/js/images)
  • global.asax 是 ASP.NET 自带的全局文件,里面可以自定义生命周期内的动作;
  • packages.config 是项目引用包的包名和包的版本信息;

、服务器搭建ASP.NET运行环境

1、服务器安装IIS运行环境

控制面板 => 程序,启动或关闭Windows功能。

asp006 - IIS服务器发布ASP.NET项目

服务器会自动跳到如下页面:

asp007 - IIS服务器发布ASP.NET项目

把我选的都勾了。

然后安装。


2、调试IIS是否正常运行

安装好以后,调试浏览器,输入 localhost 访问,出现IIS说明安装成功

asp011 - IIS服务器发布ASP.NET项目


3、发布项目

进入服务器管理器,右键进入IIS管理器

asp012 1024x685 - IIS服务器发布ASP.NET项目

asp013 1 - IIS服务器发布ASP.NET项目

添加网站。

asp014 1 - IIS服务器发布ASP.NET项目

asp015 - IIS服务器发布ASP.NET项目

注意这里端口和tomcat的端口类似,我tomcat端口教70,这里使用90避免端口冲突;物理路径就是刚刚asp文件发布的位置;网站名称随意;

到此网站基本发布完成。


4、设置网站主页

如果网页发布文件夹根目录下没有放置 index.aspx(或其他名为index的默认页面文件),则需要配置默认文档来决定首页展示,不配置会提示 404(页面无法找到)
asp016 - IIS服务器发布ASP.NET项目

此处,默认文档是用来决定网站主页的配置项。


5、开启服务器防火墙入站规则

下面是打开IIS服务器外网防火墙。
非80端口发布的项目,设置了对应端口的入站规则才可以访问到。

asp017 - IIS服务器发布ASP.NET项目

控制面板 => 系统和安全 => Windows防火墙 => 高级设置 => 入站规则 => 新建规则

填写我们发布项目的端口。

asp018 - IIS服务器发布ASP.NET项目

开放90端口,因为我这个网站上面设定的是90端口。

asp019 - IIS服务器发布ASP.NET项目

后面一直点到完成,名称我起的是 netweb。

asp020 - IIS服务器发布ASP.NET项目

完成之后我们可以在入站规则里看到我们刚刚设置的端口,双击可以看到我们的配置

防火墙开启完成。

asp021 - IIS服务器发布ASP.NET项目

我们在服务器用浏览器调试 localhost:90

启动成功。


三、常见问题与解决

我们再进行本地调试,也遇到了几个问题

问题一:配置节被父级锁定

asp022 1 - IIS服务器发布ASP.NET项目因为 IIS 7 采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许更改。

解决方法:

以管理员身份运行命令行:

C:\windows\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers 。

C:\windows\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

其中的 handlers、是错误信息中红字显示的节点名称,一般modules也会锁,不妨两条都解锁一下。


问题二:HTTP错误 404.3

asp023 - IIS服务器发布ASP.NET项目

问题二出现的原因,一般是你看了别人家的教程,没有在我前面那样添加全面的服务器功能,回到我上面讲的地方,把该安装的都装了。


问题三:发布后的网站不能访问

测试本地浏览器输入localhost:90 是否可以访问,如果可以访问,说明项目是正常运行的。这种情况应该是被拦截了,看看服务器的防火墙规则和云服务器控制台的安全组有没有打开对应的端口。

经过排查,发现是我定义项目端口为 90,但是云服务器控制台的安全组里忘记开放 90 端口了,打开即可。

asp024 1024x32 - IIS服务器发布ASP.NET项目

至此,ASP.NET在云服务器上的发布教程结束。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/315352.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

编译和链接(1)

目录 1. 程序的翻译环境和执行环境 2. 详解编译链接 2.1 翻译环境 2.2 编译本身也分为几个阶段: 2.3 运行环境 3. 预处理详解 3.1 预定义符号 3.2 #define 3.2.1 #define 定义标识符 3.2.2 #define 定义宏 3.2.3 #define 替换规则 3.2.4 #和## 1. 程序的翻译环境和执…

Qt QListWidget列表框控件

文章目录 1 属性和方法1.1 外观1.2 添加条目1.3 删除条目1.4 信号和槽 2 实例2.1 布局2.2 代码实现 Qt中的列表框控件,对应的类是QListWidget 它用于显示多个列表项,列表项对应的类是QListWidgetitem 1 属性和方法 QListWidget有很多属性和方法&#xf…

【第二课课后作业】书生·浦语大模型实战营-轻松玩转书生·浦语大模型趣味Demo

目录 轻松玩转书生浦语大模型趣味Demo课后作业1. 基础作业1.1 使用 InternLM-Chat-7B 模型生成 300 字的小故事:1.2 熟悉 hugging face 下载功能,使用 huggingface_hub python 包,下载 InternLM-20B 的 config.json 文件到本地 2. 进阶作业2.…

使用BeanShell写入内容到文件【JMeter】

一、前言 ​ 在我们日常工作中,可能会遇到需要将请求返回的数据写入到文件中。在我们使用JMeter进行性能测试时,就经常能够遇到这种情况。要想达到这种目的,我们一般采取BeanShell后置处理器来将内容写入到文件。 二、提取 ​ 在目前大多数的…

JVM工作原理与实战(十四):JDK9及之后的类加载器

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、JDK8及之前的类加载器 二、JDK9及之后的类加载器 1.启动类加载器 2.平台类加载器(扩展类加载器) 总结 前言 JVM作为Java程序的运行环境,其负…

Qt中QGraphicsView架构下实时鼠标绘制图形

上一章节介绍了关于QGraphicsView的基础讲解,以及简单的类图创建,由上一章节中最后展示的动画效果来看,今年主要讲述如何在QGraphicsView架构下,实时拖动鼠标绘制图形! 今天主要以矩形为例,再来看一下展示…

请查收“链上天眼”2023年成绩单

1月10日是中国人民警察节,是一份责任,更一份安心,随着科技的发展,链上安全领域的技术与工具不断更新迭代,更加安全的Web3世界正在构建。 根据欧科云链安全团队统计,2023 年全球范围内利用虚拟货币进行诈骗…

P1042 [NOIP2003 普及组] 乒乓球————C++

目录 [NOIP2003 普及组] 乒乓球题目背景题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示 解题思路Code运行结果 [NOIP2003 普及组] 乒乓球 题目背景 国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中 …

github上的python图片转excel,pytesseract安装相关问题

问题1:明明都pip install pytesseract,但是就是安装不上 pytesseract 未安装链接: https://pan.baidu.com/s/1I4HzCgO4mITWTcZFkdil6g?pwdafes 提取码: afes 安装后一路next,然后配置环境变量 C:\Program Files\Tesseract-OCR新建一个系统…

修改vscode内置Vue VSCode Snippets(代码片段)

打开插件文件夹 文件夹名是 "作者名.vscode-插件名-版本号"组成的. C:\Users\Administrator\.vscode\extensions\sdras.vue-vscode-snippets-3.1.1\snippets 打开vue.json "prefix": "vbase" 就是代码块的关键词,输入vbase就会提示代码块 …

9个自媒体音频创作平台(附链接通道)

​划到最后“阅读原文” ——进入官网 Hi,我是胡猛夫,每天分享实用运营工具! 更多资源,更多内容,欢迎交流!公 号 | 微视角文化 》》精彩推荐 >>微视角文化知识库:移动的自媒体运营百科全…

【Linux】宝塔端口不通

1.问题描述:端口不通 以端口16588为例: 服务器16588端口是关闭的,防火墙规则是放通的,是由于服务器内的对应程序没有监听到 对应 的公网上 图1:端口检测 图2: 端口已放行 此时访问仍然不通,但…

windows搭建银河麒麟v10虚拟机

需要用到: 已将安装包放置云盘 自取 VMware Workstation Pro16 https://cloud.189.cn/t/vYZNjqbQ7zUr (访问码:a2pd) 银河麒麟v10镜像 https://cloud.189.cn/t/j6ZNfmnYfYRr (访问码:1icf) 也可以去官网下载:https://www.kylinos.cn 1.安装VM 无…

Jenkins使用随笔

1、如果要部署的springboot程序和jenkins在同一台linux上,需要增加一条 export BUILD_IDtomcat_mobile_build_id 如下图: 原因是:jenkins在执行sh脚本的时候,如果脚本中有启动后台进程的情况,例如tomcat的关闭和启动…

Oracle DBCA工具图形化方式检测不到ASM磁盘组(解决各种报错)

本例环境: 操作系统OEL 6.5数据库版本:11.2.0.4 问题:DBCA建库的时候,检测不到ASM磁盘组 因素一: 可能是在授权的时候执行了 chown –R 775 /u01/app等修改权限。 分析:数据库无法连接ASM,这应该是权限…

电子学会C/C++编程等级考试2020年12月(三级)真题解析

C/C++编程(1~8级)全部真题・点这里 第1题:完美立方 形如 a^3= b^3 + c^3 + d^3的等式被称为完美立方等式。例如 12^3= 6^3 + 8^3 + 10^3 。 编写一个程序,对任给的正整数 N (N≤100),寻找所有的四元组 (a, b, c, d),使得 a^3= b^3 + c^3 + d^3 ,其中 a,b,c,d均大于 11, …

Chrome DevTools 常用面板攻略

文章目录 前言一、概述1.1 简介1.2 DevTools 初步了解 二、设备模式(Device Mode)2.1 面板概述2.2 设备切换 三、元素面板(Elements)3.1 面板概述3.2 编辑样式3.2.1 添加、启用和停用 CSS 类3.2.2 添加或移除动态样式3.2.3 快速向…

UE5 通过接口实现角色描边效果

接口不能够被实例化,不能够在内部书写函数的逻辑和设置属性,只能够被继承使用。它能够让不同的类实现有相同的函数,继承接口的类必须实现接口的函数。 并且,我们可以在不同的类里面的函数实现也不同,比如A类描边是红色…

洗护工厂上门取送小程序具备哪些优势

上门洗衣洗鞋小程序,让洗衣洗鞋更简单! 在繁忙的生活中,我们常常因为时间紧张而无法清洗鞋子或衣物。这时,一个方便快捷的上门洗衣洗鞋小程序就能够派上大用场。 这种小程序利用现代科技,将洗衣洗鞋服务与移动互联网相…

C# 接口(Interface)和抽象类(Abstract Class)区别和详细使用案例

文章目录 区别:1. **定义**:2. **继承与实现**:3. **成员**:4. **目的**: 使用示例:- **接口使用场景**:- **抽象类使用场景**: 在C#中,接口(Interface&#…