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

news2024/9/30 15:28:24

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小学生练字神器,在线字帖生成器网站源码

源码介绍 帮助小学生规范汉字书写,提高汉字书写水平,在线小学生练字神器!它不仅功能强大,而且完全免费,是每个小学生必备的练字工具。 海量字库:收录9574个常用汉字,满足小学生的学习需求。多…

R语言【paleobioDB】——pbdb_intervals():通过参数选择,返回多个地层年代段的基本信息

Package paleobioDB version 0.7.0 paleobioDB 包在2020年已经停止更新,该包依赖PBDB v1 API。 可以选择在Index of /src/contrib/Archive/paleobioDB (r-project.org)下载安装包后,执行本地安装。 Usage pbdb_interval (id, ...) Arguments 参数【..…

【Emgu.CV教程】5.1、几何变换之平移

图像的几何变换对于图像处理来说,也是最基础的那一档次,包括平移、旋转、缩放、透视变换等等,也就是对图像整理形状的改变,用到的函数都比较简单,理解起来也很容易。但是为了凑字数,还是一个函数一个函数的…

微信公众号生成带参数的二维码加上logo

上次,记录的《用php生成微信公众号带参数的二维码demo》 这次,加上logo显得正规一点,起码看起来不像诈骗二维码 接上,上次的公众号二维码(远程二维码地址) // $wx_code ‘https://mp.weixin.qq.com/cgi-b…

【JVM的相关参数和调优】

文章目录 JVM 调优的参数类型一、标配参数二、X参数三、XX参数 JVM 调优的常用参数 JVM 调优的参数类型 一、标配参数 这类此参数在jdk的各个版本之间很少会变化,基本不改变 java -version,查看当前电脑上的jdk的版本信息 java -help,查看…

Typora上传图片失败PicGo

起初我是在Typora中点击一键上传图片,结果如下,报错。可是我找了半天也没错啊。 最后发现原来是一个图片的命名问题,名字太过于复杂,PicGo识别不出,一个图片报错导致其它也上传不了。 我把它复制到其它文件夹之后&…

Jetson_yolov8_解决模型导出.engine遇到的问题、使用gpu版本的torch和torchvision、INT8 FP16量化加快推理

1、前情提要 英伟达Jetson搭建Yolov8环境过程中遇到的各种报错解决(涉及numpy、scipy、torchvision等)以及直观体验使用Yolov8目标检测的过程(CLI命令行操作、无需代码)-CSDN博客和YOLOv8_测试yolov8n.pt,yolov8m.pt训…

Qt实现复杂列表

Qt实现复杂列表 界面效果layeritemdelegate.hlayeritemdelegate.cpplayertablemodel.hlayertablemodel.cpplayertableview.hlayertableview.cppmainwindow.hmainwindow.cpp 界面效果 layeritemdelegate.h #ifndef LAYERITEMDELEGATE_H #define LAYERITEMDELEGATE_H#include &l…

【python】搭配Miniconda使用VSCode

现在的spyder总是运行出错,启动不了,尝试使用VSCode。 一、在VSCode中使用Miniconda管理的Python环境,可以按照以下步骤进行: a. 确保Miniconda环境已经安装并且正确配置。 b. 打开VSCode,安装Python扩展。 打开VS…

InternLM第3次课作业

部署 参考github教程:https://github.com/InternLM/tutorial/tree/main/langchain 问题1: windows端口映射过程命令 ssh -i C:\\Users\\breat/.ssh/id_rsa.pub -CNg -L 7860:127.0.0.1:7860 rootssh.intern-ai.org.cn -p 3 4145 中,提示找不…

MetaGPT前期准备与快速上手

大家好,MetaGPT 是基于大型语言模型(LLMs)的多智能体协作框架,GitHub star数量已经达到31.3k。 接下来我们聊一下快速上手 这里写目录标题 一、环境搭建1.python 环境2. MetaGpt 下载 二、MetaGPT配置1.调用 ChatGPT API 服务2.简…

Unity对应SDK和NDK版本的对照表

官网:Unity - Manual: Android environment setup 本人安装的是2022版本长期支持版本2022.3.15f1c1 安装Java的JDK环境就不在这里展开了,就记录下对Android SDK的设置,要与Unity的版本对应,否则会出现很多莫名奇妙的问题。 打开…

电子学会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, …

【Jmeter之get请求传递的值为JSON体实践】

Jmeter之get请求传递的值为JSON体实践 get请求的常见传参方式 1、在URL地址后面拼接,有多个key和value时,用&链接 2、在Parameters里面加上key和value 第一次遇到value的值不是字符串也不是整型,我尝试把json放到value里面&#xff0…

java多线程面试(二)

1.说一下你对java内存模型JVM的理解 java内存模型是一种抽象的模型,被定义出来屏蔽各种硬件和操作系统的访问差异。 JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存 (Main Memory)中,每个线程…

SQL语句详解二-DDL(数据定义语言)

文章目录 操作数据库创建:Create查询:Retrieve修改:Update删除:Delete使用数据库 操作表常见的几种数据类型创建:Create复制表 查询:Retrieve修改:Update删除:Delete 操作数据库 创…

Spring Cloud配置中心

微服务意味着要将单体应用中的业务拆分成一个个子服务 , 每个服务的粒度相对较小 ,因此系统中会出现大量的服务。 由于每个服务都需要必要的配置信息才能运行 , 所以一套集中式的 , 动态的配置管理设施是必不可少的。 Spring Cloud 提供了 ConfigServer 来解决这个问题 . Sp…

客户端请求服务器的步骤

当我们在浏览器地址栏输入’http://www.xxx.com/api/xxx"时,客户端是如何找到服务器并发送请求的? 1.先找到服务器 a.检测浏览器缓存有没有缓存该域名对应的IP地址,有则通过IP地址取找服务器。 b.检测本地的hosts文件,是否有…

ROS2——launcher

在ROS2中,launcher 文件是通过Python构建的,它们的功能是声明用哪些选项或参数来执行哪些程序,可以通过 launcher 文件快速同时启动多个节点。一个 launcher 文件内可以引用另一个 launcher 文件。 使用 launcher 文件 ros2 launch 可以代替…

STM32 SPI通信协议3——读取MAX6675温度传感器

在上两章中,我们已经配置了相应的GPIO和SPI功能。这里说一下MAX6675如何读取温度。 从MAX6675手册中我们可以看到,当0的时候SCK启动,数据线开始发送信息,此时可以读取数据,当数据读完后,再拉高电平停止发送…