问个问题,想MVC4 Web Application这种应用程序发布到IIS的时候根本不需要设置启动的默认页面,如index.asp,default.html等,那么IIS是如何接收用户请求并返回对应相应页面的呢,或者说IIS也有读取Global.asax的能力?
Sorry,我是新手,好像没有C币,C币哪里来的?
问个问题,想MVC4 Web Application这种应用程序发布到IIS的时候根本不需要设置启动的默认页面,如index.asp,default.html等,那么IIS是如何接收用户请求并返回对应相应页面的呢,或者说IIS也有读取Global.asax的能力?
Sorry,我是新手,好像没有C币,C币哪里来的?
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
在IIS上运行MVC4应用的一个简单方法是使用ASP.NET Core Web API。这将允许您使用HTTP GET和POST操作来处理客户端请求。
首先,在Web应用程序的根目录下创建一个名为Startup.cs的新文件,并添加以下代码:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace MVC4Application
{
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
}
然后,为您的项目生成一个.csproj文件(如果还没有的话)。接下来,打开这个文件并替换其内容如下:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="5.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.RazorPages" Version="5.0.0" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="5.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.2" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.2" />
<PackageReference Include="Microsoft.IdentityModel.Tokens" Version="6.15.2" />
</ItemGroup>
<ProjectTools>
<SdkVersion>17.0.0</SdkVersion>
</ProjectTools>
<PropertyGroup>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<PublishSingleFile>true</PublishSingleFile>
</PropertyGroup>
</Project>
现在,您可以构建、部署并运行您的应用程序了。这将在本地计算机上运行,而不是通过IIS服务器。如果您希望将应用程序部署到IIS,请按照以下步骤进行操作:
cd C:\Users\YourUsername\Desktop\MVC4Applicationdotnet add package Microsoft.AspNetCore.Server.IISIntegrationbin并将Startup.cs移动到其中。bin文件夹中的Startup.cs,删除注释并在其中添加以下代码:using System;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
namespace Mvc4Application
{
public class Program
{
public static void Main(string[] args)
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
builder.AddEnvironmentVariables();
var configuration = builder.Build();
Console.WriteLine($"Hello MVC4Application! {configuration["message"]}");
var host = CreateHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var app = services.GetRequiredService<Startup>();
app.Configure(host, configuration);
app.Run();
}
catch (Exception ex)
{
Console.Error.WriteLine(ex.Message);
throw;
}
}
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup<Startup>());
}
}
这样,您的应用程序就可以在本地计算机上运行了,而无需通过IIS服务器。当您想要将其部署到IIS时,只需确保在IIS管理器中正确配置应用程序即可。