#c# #iis #webdeploy
Вопрос:
Я развернул свой ASP.NET Основное приложение (v5) для локальной МКС, однако, когда я пытаюсь получить доступ к одному из моих контроллеров API, я подумал, что ссылка : http://my.website/api/controllersapi. Я получаю следующую ошибку
У меня уже есть переменная среды в качестве разработки, поэтому я не совсем уверен, что еще мне следует делать. Вот несколько классов из моего приложения, чтобы вы могли иметь представление о том, как оно настроено.
Программа.cs:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
webBuilder.UseContentRoot(Directory.GetCurrentDirectory());
webBuilder.UseIISIntegration();
});
}
StartUp.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AutoPatchManagementContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("AutoPatchManagementContext")));
services.AddSignalR();
services.AddControllersWithViews().AddNewtonsoftJson(options =>
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore
);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Homepage}/{id?}");
endpoints.MapHub<MyHub>("/myHub");
});
}
launchSetting.json
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:53043",
"sslPort": 44373
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"AutoPatchManagement": {
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000;http://localhost:53043",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
Вот мой IISProfile.pubxml
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>MSDeploy</WebPublishMethod>
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish>http://my.website</SiteUrlToLaunchAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<ProjectGuid>14712f10-a37a-441a-ad5e-e37f85eff5f4</ProjectGuid>
<SelfContained>false</SelfContained>
<MSDeployServiceURL>localhost</MSDeployServiceURL>
<DeployIisAppPath>my.website</DeployIisAppPath>
<RemoteSitePhysicalPath />
<SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
<MSDeployPublishMethod>InProc</MSDeployPublishMethod>
<EnableMSDeployBackup>False</EnableMSDeployBackup>
<EnableMsDeployAppOffline>True</EnableMsDeployAppOffline>
<TargetFramework>net5</TargetFramework>
</PropertyGroup>
</Project>
Я искал об этой ошибке, и единственным решением, которое я нашел, было изменить переменную de enviorment на Development, которая уже есть. Что-то не так с моими текущими конфигурациями?
Заранее спасибо
Ответ №1:
Вам нужно добавить разработку в web.config, а не в какой-либо другой файл. Web.config должен выглядеть следующим образом:
<aspNetCore processPath="dotnet" arguments=".TestWebApi.dll" stdoutLogEnabled="false" stdoutLogFile=".logsstdout" hostingModel="inprocess">
<environmentVariables>
<environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" />
</environmentVariables>
</aspNetCore>