天道酬勤,学无止境

IIS错误502.5上的ASP.NET Core 1.0(ASP.NET Core 1.0 on IIS error 502.5)

问题

我刚刚将服务器(Windows 2012R2)从以前的.Net Core 1.0 RC2更新为.Net Core 1.0 RTM Windows Hosting Pack。 我的应用程序可以在我的PC上正常运行,但服务器始终显示:

HTTP Error 502.5 - Process Failure


Common causes of this issue:

The application process failed to start
The application process started but then stopped
The application process started but failed to listen on the configured port

它以前与RC2版本一起使用。 不知道会出什么问题。

这就是事件查看器说的所有内容:

Failed to start process with the commandline 'dotnet .\MyWebApp.dll'. Error code = '0x80004005'.

最糟糕的是,应用程序日志为空! 我的意思是那些stdout_xxxxxxxxx.log文件是完全空的,并且都具有0字节大小。

我应该怎么办?? 未记录错误时如何知道错误原因?

回答1

我可以通过运行来修复它

“ C:\ Program Files \ dotnet \ dotnet.exe”“ C:\ fullpath \ PROJECT.dll”

在命令提示符下,这给了我一个更有意义的错误:

“未找到指定的框架'Microsoft.NETCore.App'版本'1.0.1。-检查应用程序依存关系并将目标框架版本安装在以下位置:C:\ Program Files \ dotnet \ shared \ Microsoft.NETCore.App-安装了以下版本:1.0.0-或者,安装框架版本“ 1.0.1”。

如您所见,我的服务器上安装了错误的NET Core版本。 卸载先前的1.0.0版并安装了正确的1.0.1版之后,我能够运行我的应用程序。

回答2

我遇到了同样的问题,在我的情况下,我的应用程序池的用户身份权限不足,在asp.net doc的发布到IIS页面上,此错误列出了两个原因:

  • 如果发布了独立的应用程序,请确认您没有在project.json buildOptions中设置与发布RID冲突的平台。 例如,不要指定x86平台,而是使用RID为win81-x64进行dotnet publish -c Release -r win81-x64dotnet publish -c Release -r win81-x64 )。 该项目将在没有警告或错误的情况下发布,但会由于服务器上的上述记录的异常而失败。
  • 检查web.config中<aspNetCore>元素上的processPath属性,以确认对于便携式应用程序来说是dotnet对于独立应用程序来说是。\ my_application.exe。
  • 对于便携式应用程序,可能无法通过PATH设置访问dotnet.exe 。 确认系统路径设置中存在C:\Program Files\dotnet\
  • 对于便携式应用程序,可能无法通过应用程序池的用户身份访问dotnet.exe 。 确认AppPool用户身份可以访问C:\Program Files\dotnet目录。
  • 通过调用应用程序的WebHostBuilder().UseIISIntegration()方法,确认您已正确引用了IIS Integration中间件。
  • 如果您使用的是.UseUrls()扩展方法与红隼当自托管,确认它是定位在之前.UseIISIntegration()扩展方法上WebHostBuilder() 当在IIS后面运行Kestrel时, .UseIISIntegration()必须为反向代理设置Url ,并且其值不能被.UseUrls()覆盖。

就我而言,这是第四个原因,我通过右键单击我的应用程序池进行了更改,然后在“流程模型”下的高级设置中,将“身份”设置为具有足够权限的用户:

回答3

我通过IIS的硬重置来完成此工作(我只是刚刚安装了主机程序包)。

事实证明,仅在IIS管理器中按“重新启动”是不够的。 我只需要打开命令提示符并键入“ iisreset”

回答4

所以我有了一个新服务器,这次是Windows 2008R2,我的应用程序运行正常。

我不能肯定地说旧服务器出了什么问题,但是我有一个主意。

因此,由于我以前在编译该应用程序时没有考虑任何平台,因此它为我提供了dll版本,该版本仅在目标主机安装了.Net Core Windows Hosting软件包的情况下才有效。 就我而言,它已经安装好了

该应用程序无法正常运行后,我决定将其编译为带有win7-x64作为运行时的控制台应用程序。 这次,我在服务器上运行应用程序的exe时,它崩溃并出现有关缺少dll的错误:

The program can't start because api-ms-win-crt-runtime-l1-1-0.dll is missing

该dll来自Universal C Runtime,该文件包含在Visual Studio 2015Visual C ++可再发行组件中

我尝试安装该软件包(x64和x86),但每次在Windows Server 2012 R2上都失败(不知道为什么)。

但是,当我尝试将它们安装在新服务器Windows Server 2008 R2中时,它们已成功安装。 这可能是其背后的原因,但仍不能确定。

回答5

发布网络应用程序时,我遇到了同样的问题。 如果仍然有人通过更改{AppName} .runtimeconfig.json来解决此问题

    {
  "runtimeOptions": {
    "framework": {
      "name": "Microsoft.NETCore.App",
      "version": "1.1.2"
    },
    "configProperties": {
      "System.GC.Server": true
    }
  }
}

将版本从“版本”:“ 1.1.2”更改为“版本”:“ 1.1.1” ,一切正常

回答6

我有同样的问题。

为了找到确切的来源,我打开了登录web.config文件的步骤:

<aspNetCore processPath="dotnet" arguments=".\MyWebService.dll" stdoutLogEnabled="**true**" stdoutLogFile=".\logs\stdout" />

并在MyWebService根文件夹中创建了日志子文件夹。

重新启动IIS并尝试执行API后,出现错误,并且缺少正确的Core Runtime。 下载完安装的DotNetCore.1.0.5_1.1.2-WindowsHosting后,错误消失了。

回答7

遇到相同的问题,所有解决方案均无效。 找到了这颗宝石,并认为如果能帮助别人,我会过去的。 在Server 2012 R2上安装,得到DLL丢失错误,尝试重新安装VS C ++ 2015并得到错误。 解决方法是执行以下操作:

似乎文件C:\ProgramData\Package Cache\...\packages\Patch\x64\Windows8.1-KB2999226-x64.msu存在安装问题。 打开管理员命令提示符,请执行以下操作:

c:
mkdir tmp
mkdir tmp\tmp
move "C:\ProgramData\Package Cache\...\packages\Patch\x64\Windows8.1-KB2999226-x64.msu" c:\tmp
expand -F:* c:\tmp\Windows8.1-KB2999226-x64.msu c:\tmp\tmp
dism /online /add-package /packagepath:c:\tmp\tmp\Windows8.1-KB2999226-x64.cab

注意:用正确的文件夹名称替换“ ...”。 之后,重新安装VS C ++ 2015程序包。

回答8

我有一个类似的问题,并引用福尔摩斯的话:“当你消除了不可能的事情时,无论多么不可能,仍然存在的事实一定是事实吗?

我检查了目标服务器.NET框架是否已安装在服务器上,事实证明并非如此。 我安装了4.6.2 .NET Framework,它可以正常工作。

回答9

在我的VS项目自动升级到.NET Core 1.1.2之后,我在生产服务器上遇到了这个问题。

我只是从这里在生产服务器上安装了1.1.2 .net core运行时:https://www.microsoft.com/net/download/core#/runtime

回答10

解决了,我今天在部署到AZURE时遇到了同样的问题。 然后我对本地IIS尝试了同样的操作,遇到了同样的问题。 由于我是.net CORE的新手,因此在实际解决问题之前的数小时内苦苦挣扎。

在我们的解决方案中,发布到IIS后,观察到了我的web.confile文件,特别是在<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" />

在我们的部署文件夹中,生成的web.config如下所示: <aspNetCore processPath="dotnet" arguments=".\Yodlee.dll -argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

现在,请尝试将Visual Studio解决方案中的上述配置更改为<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" forwardWindowsAuthToken="false" stdoutLogEnabled="false" />

在我们的新部署文件夹中,生成的web.config如下所示: <aspNetCore processPath="dotnet" arguments=".\Yodlee.dll" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

这解决了我的问题,希望对您有所帮助。

回答11

当我将开发机更新为Core 1.0.1时,我遇到了同样的问题,但是却忘记了更新服务器。

回答12

尝试将.NET Core 2.0 API发布到AWS EB时遇到HTTP错误502.5,并通过将以下代码添加到.csproj来解决了该问题:

  <PropertyGroup>
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
  </PropertyGroup>
回答13

我有一个同样的问题。 我将应用程序池标识更改为网络服务帐户。 然后,我按照@danielyewright在他的github评论中所说的那样,在web.config中显式设置了dotnet.exe的路径,以使应用程序正常运行。 设置路径后即可使用。

谢谢

回答14

在我的情况下,分享此错误是因为我忘了用以下方式更新project.json

"buildOptions": {
    "emitEntryPoint": true
  }
回答15

我有同样的问题,与建议的答案中的VSG24描述的问题相同-在CMD中键入'dotnet'时出现讨厌的错误消息:

该程序无法启动,因为缺少api-ms-win-crt-runtime-l1-1-0.dll

我通过在Windows Server 2012 R2上手动安装以下2个更新(以及先决条件和所有其他更新链接)解决了此问题-请仔细阅读Microsoft网站上的安装说明:

  1. KB2919355
  2. KB2999226

希望这对某人有帮助。

回答16

当我尝试发布Web应用程序的Debug版本时,我遇到了同样的问题。 这组文件不包含带有属性processPath的正确值的文件web.config

我从发行版中获取了此文件,将值分配给了我的exe文件的路径。

<aspNetCore processPath=".\My.Web.App.exe" ... />
回答17

以我为例,服务器上安装的Net Core版本存在问题。 我只是在开发机器上安装了相同的版本,所以一切都OK :-)

回答18

我需要安装在此处找到的最新.net Core版本。 无需重新启动站点或服务器

回答19

我通过向站点的应用程序添加“编辑权限”来解决该问题,将其映射到物理目录,然后选择可以访问此根文件夹的Windows用户。 (专用网络)。

回答20

以我AspNetCore.2.0.6.RuntimePackageStore_x64.exe ,在安装AspNetCore.2.0.6.RuntimePackageStore_x64.exeDotNetCore.2.0.6-WindowsHosting.exe ,我需要重新启动服务器以使其工作,而不会出现502错误的网关和代理错误。

更新:

有一种无需重启即可使用的方法:https://stackoverflow.com/a/50808634/3634867

回答21

使用管理员凭据打开命令提示符

输入以下命令并按Enter

> IIS重置

或者

使用管理员凭据打开Visual Studio 2017

Package Manager控制台中键入以下命令,然后按Enter

PM > IIS重置

PM> IISRESET
Attempting stop...
Internet services successfully stopped
Attempting start...
Internet services successfully restarted
回答22

对我来说,这是由于安装了不同版本的.Net Core引起的。 我匹配了我的开发和生产服务器,它正常工作。

回答23

我也有这个问题(在VS 15和17上都发生了错误)。 但是,在VS15上,它返回CONNECTION_REFUSED错误,在VS17上,它ASP.NET Core 1.0 on IIS error 502.5 502.5上返回ASP.NET Core 1.0 on IIS error 502.5

使固定

  1. 导航到您的项目目录,然后找到隐藏的文件夹.vs (位于项目文件夹dir中)。 (记住要显示隐藏的文件/文件夹)

  2. 关闭VS

  3. 删除.vs-folder
  4. 以admin身份启动VS(VS将重新创建.vs-folder)
回答24

这就是我的想法,这是最近在Windows 10上安装更新后发生的。 从我收集的数据中,安装了Windows Defender更新,该更新假定我的“ Project.dll”(一个asp.net核心项目)的行为像病毒一样,因此将其删除。

因此,在开始安装/卸载东西之前,我建议您做的第一件事是检查并确认“ Project.dll”在正确的位置。

如果不再存在,请将其复制回该位置。

如果您在复制文件时遇到困难,请将排除项添加到Windows Defender中的项目文件夹中。 (在这里学习如何做。)

这对我立即起作用,并且我在多个服务器的应用程序中重复了这一步骤。

回答25

对我来说,Startup.cs中的connectionString在以下情况下为空:

services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

它为null,因为应用程序没有在appsettings.json中寻找连接字符串。

必须将Program.cs更改为:

public static void Main(string[] args)
{
    BuildWebHost(args).Run();
}

public static IWebHost BuildWebHost(string[] args) =>
     WebHost.CreateDefaultBuilder(args)
     .ConfigureAppConfiguration((context, builder) => builder.SetBasePath(context.HostingEnvironment.ContentRootPath)
     .AddJsonFile("appsettings.json").Build())
     .UseStartup<Startup>().Build();
回答26

我不知道为什么这对我BuildWebHost ,但是我正在使用Windows身份验证,并且在Program.cs BuildWebHost中有以下代码:

.UseStartup<Startup>()
.UseHttpSys(options =>
{
    options.Authentication.Schemes =
        AuthenticationSchemes.NTLM | AuthenticationSchemes.Negotiate;
    options.Authentication.AllowAnonymous = false;
})
.Build();

删除.UserHttpSys位后,它现在可以工作,并且我仍然可以作为域用户进行身份验证。

BuildWebHost现在看起来像

public static IWebHost BuildWebHost(string[] args) =>
    WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .Build();
回答27

我遇到了同样的错误,发现问题是在发布到Azure期间,我的web.config文件被修改,因此以下行最终如下所示:

<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" startupTimeLimit="3600" requestTimeout="23:00:00" />

生产的问题在于参数的内容: “-argFile IISExeLauncherArgs.txt”

看来下一个.NET Core SDK(当前在预览中)将解决此问题,但目前,解决方法是将此块添加到.csproj文件中:

<Target Name="bug_242_workaround" AfterTargets="_TransformWebConfig">
    <Exec Command="powershell &quot;(Get-Content '$(PublishDir)Web.config').replace(' -argFile IISExeLauncherArgs.txt', '') | Set-Content '$(PublishDir)Web.config'&quot;" />
  </Target>

这将修改web.config并删除有问题的部分以进行发布。

参考:https://github.com/aspnet/websdk/issues/242

希望能帮助到你。

回答28

更改发布配置后为我工作。

回答29

我遇到了类似的问题(Asp.Net Core 2.x),该问题是由于尝试在64位Windows服务器上的IIS中运行32位asp.net核心应用程序引起的。 根本原因在于,自动生成的web.config(如果您的项目未明确包括默认情况下不包含的asp.net核心项目)则不包含dotnet可执行文件的完整路径。 当您在64位计算机上安装主机捆绑包时,它将安装64位和32位版本的dotnet,但是默认情况下该路径将解析为64位,并且32位asp.net核心应用程序将无法加载。 在浏览器中,您可能会看到502.5错误,并且如果您查看服务器事件日志,则可能会看到错误代码0x80004005。 如果您尝试从命令提示符处运行dotnet.exe来在该服务器上加载asp.net核心应用程序dll,则可能会看到类似“ BadImageFormatException”或“试图加载格式不正确的程序”之类的错误。 对我有用的解决方案是将web.config添加到我的项目(和部署)中,并在该web.config中将完整路径设置为dotnet.exe的32位版本。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <location path="." inheritInChildApplications="false">
        <system.webServer>
            <handlers>
                <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
            </handlers>
            <aspNetCore processPath="C:\Program Files (x86)\dotnet\dotnet.exe" arguments=".\My32BitAspNetCoreApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
       </system.webServer>
   </location>
</configuration>
回答30

我遇到了同样的问题,在我的案例中,原因是EF内核试图从appsettings.development.json文件中读取连接字符串。 我打开它,发现连接字符串已注释。

//{
//  "ConnectionStrings": {
//    "DefaultConnection": "Server=vaio;Database=Goldentaurus;Trusted_Connection=True;",
//    "IdentityConnection": "Server=vaio;Database=GTIdentity;Trusted_Connection=True;"
//  }
//}

然后,我像下面这样取消提交它们,问题就解决了:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=vaio;Database=Goldentaurus;Trusted_Connection=True;",
    "IdentityConnection": "Server=vaio;Database=GTIdentity;Trusted_Connection=True;"
  }
}
回答31

我为此更改了个人资料选项,并且可以正常使用!!!

也许您应该更改这两个选项:

  1. 部署方式
  2. 目标运行时间

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • ASP.NET Core 1.0 on IIS error 502.5
    I just updated my server (Windows 2012R2) to .Net Core 1.0 RTM Windows Hosting pack from the previous .Net Core 1.0 RC2. My app works on my PC without any issues but the server keeps showing: HTTP Error 502.5 - Process Failure Common causes of this issue: The application process failed to start The application process started but then stopped The application process started but failed to listen on the configured port It previously worked with the RC2 version. Don't know what could go wrong. This is all event viewer says: Failed to start process with the commandline 'dotnet .\MyWebApp.dll'
  • asp.net core web api published in IIS after moved to different IIS server pc gives error 500.19 (0x8007000d)
    I developed a web api in asp.net core version 1.0.1 using visual studio 2015, when I published the web api in IIS 10 of the same pc where it was developed, everything works correctly. The problem arises when I copy and paste the publication folder of the web api to a different pc, the browser shows the error 500.19 Internal Server Error, error code 0x8007000d, "The requested page can not be accessed because the related configuration data for the page is invalid ", which leads to some problem in the web.config. I do not think the version of IIS is the problem because moving from IIS 10 to IIS 8
  • 在Asp.Net Core中增加上传文件的大小(Increase upload file size in Asp.Net core)
    问题 目前,我正在使用Asp.Net Core,MVC6需要上传的文件大小不受限制。 我已经搜索了它的解决方案,但仍然没有得到实际的答案。 我已经尝试过此链接 如果有人有任何想法,请帮助。 谢谢。 回答1 其他答案解决了IIS限制。 但是,从ASP.NET Core 2.0开始,Kestrel服务器还施加了自己的默认限制。 KestrelServerLimits.cs的Github 要求正文大小限制和解决方案的公告(在下面引用) MVC说明 如果要更改特定MVC操作或控制器的最大请求正文大小限制,则可以使用RequestSizeLimit属性。 下面将允许MyAction接受最大为100,000,000字节的请求正文。 [HttpPost] [RequestSizeLimit(100_000_000)] public IActionResult MyAction([FromBody] MyViewModel data) { [DisableRequestSizeLimit]可用于使请求大小不受限制。 这仅针对归因的动作或控制器有效地还原了2.0.0之前的行为。 通用中间件指令 如果MVC操作未处理该请求,则仍可以使用IHttpMaxRequestBodySizeFeature在每个请求的基础上修改该限制。 例如: app.Run(async context => { context
  • Virtual directory inside of ASP.NET Core app in IIS
    We have an application using ASP.NET Core 1.0 RC1 and hosted on IIS. It works fine. Now we have static content, that is available on a file share and should be accessible from the application. Before ASP.NET 5, we added a virtual directory in IIS and could access the shared content easily. With our hosted ASP.NET 5 application, this unfortunately doesn't seem to work. We just get a 404 back when trying to access the static content. Our application is using app.UseIISPlatformHandler() and app.UseStaticFiles(), but this doesn't work. We discovered that we could use app.UseFileServer() with
  • How do I configure a .net core API to work in IIS?
    I've got a .net core API created in Visual Studio 2017 that's working fine. When I go to deploy it I get error message HTTP Error 500.19 with error code 0x8007000d. I've found multiple solutions online such as making sure windows features are installed, removing the .net CLR version, changing the application pool identity, changes to web.config and applicationHost.config, but nothing has worked. Is there a way to definitively find what the problem is or am I stuck doing trial and error with the myriad of possible solutions? Any specific solutions you know of? Here are screenshots of the IIS
  • 发布到IIS,设置环境变量(Publish to IIS, setting Environment Variable)
    问题 阅读这两个问题/答案,我能够在IIS 8.5服务器上运行Asp.net 5应用程序。 Asp.net vNext早期Beta发布到Windows Server中的IIS 如何配置MVC6应用程序以在IIS上工作? 问题是,即使在IIS上运行,Web应用程序仍仍在使用env.EnvironmentName和值为Development值。 另外,我想在同一台服务器上运行同一Web的两个版本(登台,生产),因此我需要一种方法来分别为每个Web设置变量。 这个怎么做? 回答1 该答案最初是为ASP.NET Core RC1编写的。 在RC2中,ASP.NET Core从通用的httpPlafrom处理程序转移到aspnetCore特定的处理程序。 请注意,步骤3取决于您使用的ASP.NET Core版本。 事实证明,可以为ASP.NET Core项目设置环境变量,而不必为用户设置环境变量或创建多个命令条目。 在IIS中转到您的应用程序,然后选择“ Configuration Editor 。 选择Configuration Editor 在Section组合框中选择system.webServer/aspNetCore (RC2和RTM)或system.webServer/httpPlatform (RC1) 在“ From组合框”中选择“ Applicationhost
  • .NET Core app unable to start in IIS due to ErrorCode = '0x80004005 : 80008083
    I have a .NET Core application. It runs locally with VS2017 and Kestrel. It runs locally under IIS. However, on the server it fails to start with a 502.5 - Process Failure message. In the event logs I get more detail: Application '...' with physical root 'C:...\my-app-folder\' failed to start process with commandline '"dotnet" .\MyApp.dll', ErrorCode = '0x80004005 : 80008083. Previous builds of the application work fine on the same server, the only difference being that they were published with VS2017RC (2&3) and this is the first build with the fully released VS2017. What does ErrorCode =
  • HTTP错误500.30-ANCM进程内启动失败(HTTP Error 500.30 - ANCM In-Process Start Failure)
    问题 我正在尝试使用.net core sdk 2.2附带的一项新功能,该功能据说可以将性能提高约400%。 令人印象深刻,因此我在ABP( ASP.NET Boilerplate )项目中进行了尝试 Template asp.net core mvc 4.0.2.0 我将以下内容添加到我的web.mv.cproj文件中 <PropertyGroup> <TargetFramework>netcoreapp2.2</TargetFramework> <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.AspNetCore.App" /> <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" /> </ItemGroup> 不幸的是,我认为此版本的ABP框架不兼容,因为该项目无法运行并抛出:(最终) HTTP错误500.30-ANCM进程内启动失败 在web.config中设置stdoutLogEnabled="true"后,我检查了日志
  • IIS Server & ASP.Net Core - 500.19 with error code 0x8007000d on httpplatformhandler tag
    I am getting the following error when I try to launch my ASP.Net Core App using IIS Server v7.5 ... I published the website (File System option in Visual Studio) to a specific directory successfully. It launches fine from approot/web.cmd file. But when I try to hook it up to IIS Server and point it to the wwwroot folder, I get the following error: HTTP Error 500.19 - Internal Server Error The requested page cannot be accessed because the related configuration data for the page is invalid. Detailed Error Information Module IIS Web Core Notification Unknown Handler Not yet determined Error Code
  • 如何在ASP.NET CORE中获取客户端IP地址?(How do I get client IP address in ASP.NET CORE?)
    问题 您能否让我知道使用MVC 6时如何在ASP.NET中获取客户端IP地址Request.ServerVariables["REMOTE_ADDR"]不起作用。 回答1 API已更新。 不确定何时更改,但是根据Damien Edwards的说法,在12月下旬,您现在可以执行以下操作: var remoteIpAddress = request.HttpContext.Connection.RemoteIpAddress; 回答2 在project.json中添加一个依赖项: "Microsoft.AspNetCore.HttpOverrides": "1.0.0" 在Startup.cs的Configure()方法中,添加: app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto }); 而且当然: using Microsoft.AspNetCore.HttpOverrides; 然后,我可以使用以下命令获取ip: Request.HttpContext.Connection.RemoteIpAddress 就我而言,在VS中进行调试时
  • CustomErrors模式=“关闭”(CustomErrors mode=“Off”)
    问题 每次将Web应用程序上载到提供程序时,都会收到错误消息。 由于有customErrors模式,因此我看到的只是默认的“运行时错误”消息,指示我关闭customErrors以查看有关该错误的更多信息。 激怒了,我将我的web.config设置为如下所示: <?xml version="1.0"?> <configuration> <system.web> <customErrors mode="Off"/> </system.web> </configuration> 而且,我得到的只是愚蠢的远程错误页面,上面没有有用的信息。 我还能做些什么来关闭customErrors?! 回答1 在过去的几天里,这一直使我发疯,无法绕开它,但终于弄明白了: 在我的machine.config文件中,我在<system.web>下有一个条目: <deployment retail="true" /> 这似乎会覆盖您在web.config文件中指定的任何其他customError设置,因此将上述条目设置为: <deployment retail="false" /> 现在意味着我可以再次看到需要的详细错误消息。 machine.config位于 32位 %windir%\Microsoft.NET\Framework\[version]\config\machine.config 64位
  • .NET Core 环境变量详解
    一、概述 软件从开发到正式上线,在这个过程中我们会分为多个阶段,通常会有开发、测试、以及上线等。每个阶段对应的环境参数配置我们会使用不同的参数。比如数据库的连接字符串,开发环境一般我们都是连接的测试库。以前这种情况通常是 COPY 两个同名的配置文件来进行处理,然后在本地就使用本地的配置,生产环境就使用生产环境的配置文件,十分麻烦。而 ASP .NET CORE 利用环境变量来动态配置 JSON 文件对类似这种需求提供了支持,方便我们更好的去做这些事情。 二、ASP.NET Core环境 ASP.NET Core使用ASPNETCORE_ENVIRONMENT来标识运行时环境。。 ASP.NET Core使用环境变量基于运行时环境配置应用程序行为。 软件开发环境在软件开发组织中,我们通常具有以下开发环境。 Development->开发环境Staging->演示(模拟、临时)环境Production->生产环境 为什么我们需要不同的开发环境,如开发,演示,生产等等环境。 **开发环境:**我们的软件开发人员通常将此环境用于我们的日常开发工作。我们希望在开发环境中加载非缩小的 JavaScript 和 CSS 文件,以便于调试。类似地,如果存在未处理的异常,我们需要开发人员异常页面,以便我们可以理解异常的根本原因并在需要时进行修复。 **演示环境:*
  • ASP.NET Core with IIS - HTTP Verb Not Allowed
    We have an ASP.NET Core 2.0 web site that also presents a couple of simple Web API methods for UI enhancement purposes. The Web API calls work as expected when running locally under IIS Express, but when we deploy to our IIS 8.5 production web server, we get the following error when making HTTP DELETE and PUT requests... 405 Method Not Allowed After some web searching, we have found several posts suggesting the removal of the IIS WebDAV module. We have disabled this in IIS (it is our server), and we have also tried the following: Disabled WebDAV Enabled WebDev and set Allow verb filtering =
  • The client and server cannot communicate, because they do not possess a common algorithm - ASP.NET C# IIS TLS 1.0 / 1.1 / 1.2 - Win32Exception
    I have an issue with a C# PayTrace Gateway. The below code was working fine until yesterday when I believe they turned off SSL3 due to the Poodle Exploit. When running the code below we got the following message. The remote server has forcefully closed the connection. After doing some research on the problem we determined that because our IIS Server 7.5 was configured to still use SSL3, C# defaulted to SSL3, which PayTrace would forcibly close the connection. We then removed SSL3 from the server. Which then lead to the following error: The client and server cannot communicate, because they do
  • HTTP Error 503, the service is unavailable(HTTP Error 503, the service is unavailable)
    问题 一般而言,对于设置Web服务器我真的很陌生。 我在Windows 8上安装了IIS 8,并且在进行一些开发时尝试在本地设置一个小站点。 在IIS中,我选择“添加站点”,提供一个名称,指向一个我拥有index.html文件的位置(我尝试了其他位置,最新的位置是c:\ inetpub \ wwwroot \ test -folder),否则使用所有默认设置设置。 但是,当我尝试浏览到本地主机时,我得到了 http错误503服务不可用。 我已验证池已启动,并且已在目标文件夹上赋予IIS_IUSRS完全控制权限 我到处搜索但没有找到解决我的问题的任何东西,并且在EventLog或C:\ Windows \ System32 \ LogFiles \ HTTPERR文件夹中没有任何帮助 谁能告诉我怎么了? 回答1 用户身份可能已过时,尤其是如果您尝试启动已停止的应用程序池并且下一个请求再次失败时,尤其如此。 在IIS中,转到服务器下的“应用程序池”,然后为您的网站找到正确的应用程序池,然后单击它。 在右侧的“高级设置”菜单上,选择“身份”并进行更改,然后输入新的用户名和密码。 再次单击“应用程序池”,然后选择“回收”以重新启动它。 您也可以尝试在“事件查看器”中的Windows日志,“应用程序”,“详细信息”选项卡下查看错误消息。 回答2 其他答案也很好。 但就我而¨
  • URL中的点导致ASP.NET MVC和IIS出现404(Dots in URL causes 404 with ASP.NET mvc and IIS)
    问题 我有一个项目,要求我的URL路径中有点。 例如,我可能有一个网址,例如www.example.com/people/michael.phelps 带有点的URL会生成404。我的路由很好。 如果我通过michaelphelps,但没有点号,则表示一切正常。 如果添加点,则会出现404错误。 该示例站点在带有IIS8 Express的Windows 7上运行。 URLScan没有运行。 我尝试将以下内容添加到我的web.config中: <security> <requestFiltering allowDoubleEscaping="true"/> </security> 不幸的是,这并没有改变。 我刚刚收到404.0找不到错误。 这是一个MVC4项目,但我认为这无关紧要。 我的路由工作正常,期望的参数在那里,直到它们包含一个点为止。 我需要配置什么才能在URL中加点? 回答1 我通过编辑站点的HTTP处理程序来完成此工作。 对于我的需求,这很好并且可以解决我的问题。 我只是添加了一个新的HTTP处理程序以查找特定的路径条件。 如果请求匹配,则将其正确发送到.NET进行处理。 我对URLRewrite hack或启用RAMMFAR的解决方案非常满意。 例如,要让.NET处理URL www.example.com/people/michael.phelps
  • 部署网站:500-内部服务器错误(Deploying website: 500 - Internal server error)
    问题 我正在尝试部署ASP.NET应用程序。 我已经将该站点部署到了IIS,但是当使用浏览器访问它时,它向我显示了这一点: 服务器错误 500内部服务器错误。 您正在寻找的资源有问题,无法显示。 摆弄了web.config之后,我得到了: 由于发生内部服务器错误,因此无法显示该页面。 我如何查看此服务器错误背后的实际问题? 回答1 首先,您需要启用并查看Web消息的详细错误,因为这是一条常规消息,没有提供出于安全原因实际发生的情况的信息。 有了详细的错误,您可以在此处找到真正的问题。 另外,如果可以在服务器上运行浏览器,则可以获取有关该错误的详细信息,因为服务器会识别出您是本地用户并向您显示该错误。 或者,如果您可以使用事件查看器读取服务器的日志,那么您还将看到错误的详细信息。 在IIS 6上 <configuration> <system.web> <customErrors mode="Off"/> <compilation debug="true"/> </system.web> </configuration> 在IIS 7上 <configuration> <system.webServer> <httpErrors errorMode="Detailed" /> <asp scriptErrorSentToBrowser="true"/> </system
  • Is it possible to self-host an ASP.NET Core Application without IIS?
    I have a full-working ASP.NET MVC application (.NET Core, ASP.NET Core) which runs fine in Visual Studio (which uses IISExpress). I would now like to have a console application which takes the ASP.NET Core application and hosts it (self hosting).
  • IIS 7.5上的ASP.NET MVC(ASP.NET MVC on IIS 7.5)
    问题 我正在使用Visual Studio 2010 RC运行Windows 7 Ultimate(64位)。 我最近决定让VS在IIS而不是其附带的开发服务器上运行/调试我的应用程序。 但是,每次尝试运行MVC应用程序时,都会出现以下错误: HTTP错误403.14-禁止将Web服务器配置为不列出此目录的内容。 详细的错误信息模块目录列表模块通知ExecuteRequestHandler 处理程序StaticFile错误请求代码0x00000000 网址http:// localhost:80 / mySite / 物理路径C:\ myProject \ mySite \ 登录方法匿名登录用户匿名 我在目录中放置了一个default.aspx文件,并收到以下错误消息: HTTP错误500.21-内部服务器错误处理程序“ PageHandlerFactory-Integrated”在其模块列表中具有错误的模块“ ManagedPipelineHandler” 我还没有采取其他任何步骤来使此工作正常进行吗? 注意:我在安装VS 2010 RC之后安装了IIS 7.5。 我使用了Visual Studio 2010中MVC项目的“属性”中“ Web”选项卡下的内置“创建虚拟目录”按钮。我确保该应用程序正在使用ASP.NET 4 App Pool。 以下是我具有的IIS的已安装功能。
  • ASP.NET Core中间件与HttpModule有何不同
    前言 在ASP.NET Core中最大的更改之一是对Http请求管道的更改,在ASP.NET中我们了解HttpHandler和HttpModule但是到现在这些已经被替换为中间件那么下面我们来看一下他们的不同处。 HttpHandler Handlers处理基于扩展的特定请求,HttpHandlers作为进行运行,同时做到对ASP.NET响应请求。他是一个实现System.Web.IHttphandler接口的类。任何实现IHttpHandler接口的类都可以作为Http请求处理响应的目标程序。 它提供了对文件特定的扩展名处理传入请求, ASP.NET框架提供了一些默认的Http处理程序,最常见的处理程序是处理.aspx文件。下面提供了一些默认的处理程序。 HandlerExtensionDescriptionPage Handler.aspxhandle normal WebPagesUser Control Handler.ascxhandle Web user control pagesWeb Service Handler.asmxhandle Web service pagesTrace Handlertrace.axdhandle trace functionality 创建一个自定义HttpHandler public class CustomHttpHandler