ASP.NET Core 1.0 trên IIS lỗi 502.5


112

Tôi vừa cập nhật máy chủ của mình (Windows 2012R2) lên .Net Core 1.0 RTMgói Windows Hosting từ phiên bản trước .Net Core 1.0 RC2. Ứng dụng của tôi hoạt động trên PC mà không gặp bất kỳ sự cố nào nhưng máy chủ vẫn hiển thị:

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

Trước đây nó đã hoạt động với phiên bản RC2. Không biết những gì có thể xảy ra sai.

Đây là tất cả những gì người xem sự kiện nói:

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

phần tệ nhất là nhật ký ứng dụng trống rỗng! Ý tôi là các tệp stdout_xxxxxxxxx.log đó hoàn toàn trống và tất cả đều có kích thước 0 byte.

Tôi nên làm gì?? Làm thế nào tôi có thể biết nguyên nhân của lỗi khi nó không được đăng nhập ??



3
Nó liên quan như thế nào? Mã lỗi rõ ràng là khác nhau. Hãy để một mình thực tế là tôi đã nói rằng nó hoạt động trên PC của riêng tôi với IIS.
Vahid Amiri,

1
Đầu tiên, tôi đã nói có thể liên quan, vì đề cập đến điều đó Failed to start process with commandline 'dotnet ./bin/Debug/netcoreapp1.0/WebApplication2.dll', Error Code = '0x80004005'.- cùng một dòng lệnh và mã lỗi mà bạn đang báo cáo. Thứ hai, chỉ vì nó chạy trên máy của bạn, chứ không phải máy từ xa, chỉ ra rằng có gì đó khác trên máy chủ. Nếu bạn có thể mở rộng về cách ứng dụng được triển khai tới máy chủ, điều đó sẽ hữu ích.
Brendan Green

Ý bạn là ứng dụng của bạn hoạt động trên máy tính của bạn là gì .. bạn có nghĩa là bạn có một dự án đang triển khai cho iis? tôi có khỏe không?
Vijunav Vastivch

1
@ VSG24 Bạn có thấy phần này của tài liệu asp.net không? Xuất bản lên IIS , nó liệt kê các lỗi phổ biến và có một số lý do được liệt kê cho lỗi 502.5.
Hamid Mosalla,

Câu trả lời:


112

Tôi đã có thể sửa nó bằng cách chạy

"C: \ Program Files \ dotnet \ dotnet.exe" "C: \ fullpath \ PROJECT.dll"

trên dấu nhắc lệnh, đã cho tôi một lỗi có ý nghĩa hơn nhiều:

"Không tìm thấy khung được chỉ định 'Microsoft.NETCore.App', phiên bản '1.0.1'. - Kiểm tra sự phụ thuộc của ứng dụng và nhắm mục tiêu phiên bản khung được cài đặt tại: C: \ Program Files \ dotnet \ shared \ Microsoft.NETCore.App - Các phiên bản sau được cài đặt: 1.0.0 - Ngoài ra, hãy cài đặt phiên bản khung '1.0.1'.

Như bạn có thể thấy, tôi đã cài đặt sai phiên bản NET Core trên máy chủ của mình. Tôi đã có thể chạy ứng dụng của mình sau khi gỡ cài đặt phiên bản 1.0.0 trước đó và cài đặt đúng phiên bản 1.0.1.


2
Tôi đã quản lý để sử dụng nó để thấy rằng tôi cần cài đặt NodeJS ... vì nó đưa ra một "thông điệp có ý nghĩa hơn nhiều".
Tim Harker

Tôi không thể cho bạn biết tôi đã lãng phí bao nhiêu thời gian cho việc này. Cảm ơn bạn. Lỗi của tôi liên quan đến chứng chỉ bị thiếu. Tại sao tôi không thể gặp lỗi này thông qua một số phương pháp lành mạnh?
Sprague

4
Ai đó có thể vui lòng cho tôi biết lệnh là gì không? C: \ fullpath \ dotnet là gì ?? Đường dẫn đến ứng dụng của bạn, nhưng dotnet là gì? Không có tập tin DotNet trong thư mục dự án
Jeremy Thompson

9
@JeremyThompson đó là con đường của dotnet.exe mà thường được đặt tại: C: \ Program Files \ DotNet \ dotnet.exe
hatsrumandcode

1
Tôi vừa gặp lỗi này sau khi cập nhật lên .NET CORE 2.1.3 đã khắc phục lỗi bằng cách cài đặt .NET SDK / thời gian chạy phù hợp.
Mike Bovenlander

68

Tôi đã gặp vấn đề tương tự, trong trường hợp của tôi, đó là không đủ quyền cho danh tính người dùng của Nhóm ứng dụng của tôi, trên trang Xuất bản lên IIS của tài liệu asp.net, có một số lý do được liệt kê cho lỗi này:

  • Nếu bạn xuất bản một ứng dụng khép kín, xác nhận rằng bạn đã không thiết lập một nền tảng trong buildOptionscác project.jsonxung đột với các xuất bản RID. Ví dụ: không chỉ định nền tảng x86 và xuất bản với RID là win81-x64 ( dotnet publish -c Release -r win81-x64). Dự án sẽ xuất bản mà không có cảnh báo hoặc lỗi nhưng không thành công với các ngoại lệ đã ghi ở trên trên máy chủ.
  • Kiểm tra processPaththuộc tính trên <aspNetCore>phần tử trong web.config để xác nhận rằng phần tử đó dotnetdành cho ứng dụng di động hoặc. \ My_application.exe dành cho ứng dụng độc lập.
  • Đối với ứng dụng di động, dotnet.execó thể không truy cập được qua cài đặt PATH. Xác nhận C:\Program Files\dotnet\tồn tại trong cài đặt PATH hệ thống.
  • Đối với ứng dụng di động, dotnet.execó thể không truy cập được danh tính người dùng của Nhóm ứng dụng. Xác nhận rằng danh tính người dùng AppPool có quyền truy cập vào C:\Program Files\dotnetthư mục.
  • Xác nhận rằng bạn đã tham chiếu chính xác phần mềm trung gian Tích hợp IIS bằng cách gọi .UseIISIntegration()phương thức của ứng dụng WebHostBuilder().
  • Nếu bạn đang sử dụng .UseUrls()phương thức mở rộng khi tự lưu trữ với Kestrel, hãy xác nhận rằng nó được định vị trước khi bật .UseIISIntegration()phương thức mở rộng WebHostBuilder(). .UseIISIntegration()phải đặt Urlcho proxy ngược khi chạy Kestrel phía sau IIS và không được ghi đè giá trị của nó .UseUrls().

Trong trường hợp của tôi, đó là lý do thứ tư, tôi đã thay đổi nó bằng cách nhấp chuột phải vào nhóm ứng dụng của mình và trong cài đặt nâng cao trong Mô hình quy trình, tôi đặt Danh tính cho người dùng có đủ quyền: danh tính người dùng của Nhóm ứng dụng của tôi


1
Đây là trả lời tôi đang tìm kiếm !, trong trường hợp của tôi nó là hồ bơi ứng dụng quá ....
Armando Ramirez

3
Cảm ơn bạn. Trong trường hợp của tôi, vấn đề là với đường dẫn đến dotnet. Tìm thấy các bản ghi như vậy trong hệ thống Event Viewer: Failed to start process with commandline '"dotnet" .\PROJECT.dll', ErrorCode = '0x80070002'.
0x49D1

Tôi sẽ thêm một lý do khác: "Trình cài đặt không thể tải VC ++ Redistributable" vì máy chủ của tôi không có kết nối internet, nó không thể tải xuống gói này ... Do đó, bạn phải tải xuống theo cách thủ công: liên kết và cài đặt nó.
Paco Mendez

4
dotnetđã có trong đường dẫn của tôi, nhưng yêu cầu khởi động lại máy chủ để nó được nhận dạng.
Danny Cullen

trong trường hợp của tôi, tôi phải chỉ định giá trị --runtime trong lệnh xuất bản nếu tôi cung cấp tùy chọn --framework, nếu không thì KHÔNG cung cấp --framework và nó đang tìm ra thời gian chạy theo mặc định.
Gomes

65

Tôi đã làm việc này bằng cách cài đặt lại cứng IIS (tôi chỉ mới cài đặt gói lưu trữ).

Hóa ra chỉ cần nhấn 'Khởi động lại' trong Trình quản lý IIS là không đủ. Tôi chỉ cần mở một dấu nhắc lệnh và gõ 'iisreset'


Tôi cũng nhấn iis tái chế màu xanh lá cây tại nút gốc máy chủ web trong giao diện người dùng. Đây giải quyết nó cho tôi kết hợp với các thiết lập người dùng cho hồ bơi ứng dụngLocalSystem
JP Hellemons

Cảm ơn Michael ... Điều này cũng giải quyết được vấn đề của tôi. Đã tìm kiếm câu trả lời trong vài giờ. Cảm ơn bạn!
birwin 19/12/16

2
Tx! Câu trả lời của bạn đã nhắc nhở tôi về điều này từ ms docs "Khởi động lại hệ thống hoặc thực hiện net stop was / y sau đó là net start w3svc từ dấu nhắc lệnh để thực hiện thay đổi đối với hệ thống PATH." (sau khi cài đặt gói .NET Core Windows Server Hosting)
Quinton Smith

Đã giải quyết vấn đề của tôi quá. Cảm ơn
Met-u

Đã làm cho tôi. Cảm ơn :)
Husnain Shabbir

11

Vì vậy, tôi có một máy chủ mới, lần này là Windows 2008R2 và ứng dụng của tôi hoạt động tốt.

Tôi không thể nói chắc chắn vấn đề xảy ra với máy chủ cũ là gì nhưng tôi có một ý kiến.

Vì vậy, vì trước đây tôi đã biên dịch ứng dụng mà không có bất kỳ nền tảng nào nên nó đã cung cấp cho tôi dllphiên bản chỉ hoạt động nếu máy chủ đích đã .Net Core Windows Hostingcài đặt gói. Trong trường hợp của tôi, nó đã được cài đặt và điều đó là tốt .

Sau khi ứng dụng không hoạt động, tôi quyết định biên dịch nó thành một ứng dụng bảng điều khiển với win7-x64thời gian chạy. Lần này khi tôi chạy exeứng dụng của mình trên máy chủ, nó đã bị lỗi với lỗi thiếu dll:

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

Dll đó là từ Universal C Runtime được bao gồm trong Visual C ++ Redistributable cho Visual Studio 2015 .

Tôi đã cố gắng cài đặt gói đó (cả x64 & x86) nhưng nó không thành công mỗi lần (không biết tại sao) trên Windows Server 2012 R2.

Nhưng khi tôi cố gắng cài đặt chúng trong máy chủ mới, Windows Server 2008 R2, chúng đã cài đặt thành công. Đó có thể là lý do đằng sau nó, nhưng vẫn không thể nói chắc chắn.


5

Tôi đã gặp vấn đề tương tự khi xuất bản ứng dụng web. Nếu ai đó vẫn gặp sự cố này, hãy khắc phục sự cố bằng cách thay đổi {AppName} .runtimeconfig.json

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

Thay đổi phiên bản từ "phiên bản": "1.1.2" thành "phiên bản": "1.1.1" và everythign hoạt động tốt


5

Tôi đã từng gặp vấn đề tương tự.

Để tìm ra nguồn gốc chính xác của nó, tôi đã bật đăng nhập vào tệp web.config:

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

và tạo thư mục con nhật ký trong thư mục gốc MyWebService.

Sau khi khởi động lại IIS và cố gắng thực thi API, tôi đã gặp lỗi và nó thiếu Core Runtime thích hợp. Sau khi tải xuống bản cài đặt DotNetCore.1.0.5_1.1.2-WindowsHosting, lỗi đã biến mất.


3
IMO, bạn nên xóa các dấu hoa thị khỏi giá trị 'true' để tránh bất kỳ sự nhầm lẫn nào.
AperioOculus

4

Có cùng một vấn đề và tất cả các giải pháp không hoạt động. Đã tìm thấy viên ngọc này và nghĩ rằng mình sẽ chuyển qua nếu nó giúp được người khác. Cài đặt trên Máy chủ 2012 R2 gặp lỗi thiếu DLL, hãy thử cài đặt lại VS C ++ 2015 và gặp lỗi. Cách khắc phục là làm như sau:

Có vẻ như tệp C:\ProgramData\Package Cache\...\packages\Patch\x64\Windows8.1-KB2999226-x64.msucó vấn đề khi được cài đặt. Mở dấu nhắc lệnh quản trị viên thực hiện:

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

LƯU Ý: thay thế "..." bằng tên thư mục chính xác. Sau đó, cài đặt lại gói VS C ++ 2015.


4

Tôi đã gặp vấn đề tương tự, và trích lời Sherlock Holmes: " Khi bạn đã loại bỏ điều không thể, thì bất cứ điều gì còn lại, dù không thể xảy ra, có phải là sự thật không? "

Tôi đã kiểm tra xem khung công tác .NET mà tôi đang nhắm mục tiêu đã được cài đặt trên máy chủ chưa và hóa ra là không. Tôi đã cài đặt 4.6.2 .NET Framework và nó hoạt động.


4

Tôi gặp sự cố này trên máy chủ sản xuất của mình sau khi dự án VS của tôi được tự động nâng cấp lên .NET Core 1.1.2.

Tôi chỉ cần cài đặt thời gian chạy lõi 1.1.2 .net từ đây trên máy chủ sản xuất của mình: https://www.microsoft.com/net/download/core#/runtime


Tôi đã gặp vấn đề tương tự nhưng với lõi net 2.0.6 mới được phát hành. Đã sửa lỗi bằng cách cài đặt net core SDK 2.0.6 trên máy chủ sản xuất
dodbrian

4

GIẢI QUYẾT Tôi vừa gặp vấn đề tương tự hôm nay khi triển khai tới AZURE . Sau đó, tôi đã thử tương tự cho IIS cục bộ, gặp vấn đề tương tự. Vì tôi là người mới sử dụng .net CORE, đã vật lộn vài giờ trước khi thực sự giải quyết được nó.

Trong giải pháp của chúng tôi, sau khi xuất bản lên IIS, tôi đã quan sát tệp web.confile của mình, đặc biệt là dòng bên dưới <aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" arguments="-argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" />

Trong thư mục triển khai của chúng tôi, web.config được tạo trông giống như sau:<aspNetCore processPath="dotnet" arguments=".\Yodlee.dll -argFile IISExeLauncherArgs.txt" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

Bây giờ VUI LÒNG thử thay đổi cấu hình ở trên trong giải pháp studio trực quan thành<aspNetCore processPath="bin\IISSupport\VSIISExeLauncher.exe" forwardWindowsAuthToken="false" stdoutLogEnabled="false" />

Trong thư mục triển khai mới của chúng tôi, web.config được tạo trông giống như sau:<aspNetCore processPath="dotnet" arguments=".\Yodlee.dll" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />

Và điều này đã GIẢI QUYẾT vấn đề của tôi, Hy vọng nó sẽ giúp.


Này @Agni, điều này làm việc cho tôi, cảm ơn. Tuy nhiên, mỗi khi tôi cố gắng xuất bản lại dự án lên Azure, nó sẽ được xây dựng lại và web.config tự động được thay đổi trở lại ban đầu, với phần gây ra sự cố: "-argFile IISExeLauncherArgs.txt". Bạn đã tìm ra giải pháp cho điều đó chưa? (Tôi đang sử dụng asp.net core 2.0).
Rodrigo Pires

1
trong trường hợp của tôi, tôi đã phải thay đổi processPath="dotnet"thành processPath="C:\Program Files\dotnet\dotnet.exe". sau đó nó hoạt động.
vaheeds

3

Tôi đã gặp sự cố tương tự khi cập nhật máy phát triển của mình lên Core 1.0.1, nhưng quên cập nhật máy chủ.


Đối với tôi, tôi đã cài đặt lại SDK lõi mạng từ đây: microsoft.com/net/core#windows sau đó nó hoạt động.
Jean,

1
VS2017 hiện là .NET Core 1.1 theo mặc định - tất cả các máy chủ từ xa cần được cập nhật trước khi xuất bản các proj được nâng cấp lên IIS. Bạn có thể nhận được thông báo lỗi hữu ích hơn (".NET core 1.1 chưa được cài đặt") nhưng đang chạydotnet .\YOURPROJDLL.dll
Coruscate5

3

Tôi đã gặp phải Lỗi HTTP 502.5 trong khi cố gắng xuất bản .NET Core 2.0 API của mình lên AWS EB và đã giải quyết nó bằng cách thêm mã sau vào .csproj:

  <PropertyGroup>
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
  </PropertyGroup>

2

Tôi đã có một vấn đề tương tự. Tôi đã thay đổi danh tính nhóm ứng dụng thành tài khoản dịch vụ mạng. Sau đó, tôi đặt đường dẫn đến dotnet.exe trong web.config một cách rõ ràng để ứng dụng hoạt động bình thường như @danielyewright đã nói trong nhận xét trên github của anh ấy . Nó hoạt động sau khi đặt đường dẫn.

Cảm ơn


2

Chia sẻ rằng trong trường hợp của tôi, lỗi này là do tôi quên cập nhật project.json với:

"buildOptions": {
    "emitEntryPoint": true
  }

2

Tôi đã gặp lỗi tương tự trong câu hỏi, với các vấn đề tương tự như được VSG24 mô tả trong Câu trả lời được đề xuất - thông báo lỗi khó chịu khi nhập 'dotnet' vào CMD:

Chương trình không thể khởi động vì thiếu api-ms-win-crt-runtime-l1-1-0.dll

Tôi đã giải quyết vấn đề này bằng cách cài đặt thủ công 2 bản cập nhật sau trên Windows Server 2012 R2 (và các điều kiện tiên quyết và tất cả các bản cập nhật khác được liên kết - hãy đọc kỹ hướng dẫn cài đặt trên trang web của Microsoft):

  1. KB2919355
  2. KB2999226

Hy vọng điều này sẽ giúp ai đó.


2

Tôi gặp phải vấn đề tương tự khi cố gắng xuất bản phiên bản Gỡ lỗi của ứng dụng web của mình. Tập hợp các tệp này không chứa tệp web.configcó giá trị thích hợp của thuộc tính processPath.

Tôi lấy tệp này từ phiên bản Phát hành, giá trị được gán cho đường dẫn đến tệp exe của tôi.

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

2

Trong trường hợp của tôi là sự cố với phiên bản Net Core được cài đặt trên máy chủ. Tôi chỉ cần cài đặt phiên bản tương tự như trên máy phát triển của mình và mọi thứ đều ổn :-)



2

Tôi đã giải quyết nó bằng cách thêm "quyền chỉnh sửa" vào ứng dụng của trang web, ánh xạ tới thư mục vật lý và sau đó chọn người dùng windows có thể có quyền truy cập vào thư mục gốc này. (Mạng riêng tư).


2

Trong trường hợp của tôi, sau khi cài đặt AspNetCore.2.0.6.RuntimePackageStore_x64.exeDotNetCore.2.0.6-WindowsHosting.exe, tôi cần khởi động lại máy chủ để máy chủ hoạt động mà không gặp lỗi 502 bad gateway và proxy.

CẬP NHẬT:

Có một cách bạn có thể sử dụng nó mà không cần khởi động lại: https://stackoverflow.com/a/50808634/3634867


2

Mở dấu nhắc lệnh với thông tin đăng nhập Quản trị viên

Nhập lệnh sau và nhấn enter

> IISRESET

HOẶC LÀ

Mở Visual Studio 2017 bằng thông tin đăng nhập Quản trị viên

Nhập lệnh sau vào Bảng điều khiển Trình quản lý Gói và nhấn Enter

PM > IISRESET

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

2

Đối với tôi, nguyên nhân là do cài đặt các phiên bản .Net Core khác nhau. Tôi đã khớp với nhà phát triển và máy chủ sản xuất của mình và nó đã hoạt động.


1

Tôi cũng gặp sự cố này (Lỗi xảy ra cả trên VS 15 và 17). Tuy nhiên trên VS15 nó trả về một CONNECTION_REFUSEDlỗi và trên VS17 nó trả về ASP.NET Core 1.0 on IIS error 502.5.

SỬA CHỮA

  1. Điều hướng đến thư mục dự án của bạn và tìm thư mục ẩn .vs(nó nằm trong dir thư mục dự án). (Nhớ hiển thị các tệp / thư mục ẩn)

  2. Đóng VS

  3. Xóa thư mục .vs-
  4. Bắt đầu VS với tư cách quản trị viên (thư mục .vs-sẽ được VS tạo lại)

1

Đây là những gì tôi đã tìm ra và điều này đã xảy ra gần đây trên Windows 10 sau khi bản cập nhật được cài đặt. Từ những gì tôi thu thập được, một bản cập nhật Windows Defender đã được cài đặt giả định rằng "Project.dll" (một dự án lõi của asp.net) của tôi hoạt động giống như một vi-rút nên nó đã bị xóa.

Vì vậy, một trong những điều đầu tiên tôi khuyên bạn nên làm trước khi bắt đầu cài đặt / gỡ cài đặt nội dung là kiểm tra để xác nhận "Project.dll" của bạn ở đâu.

Sao chép nó trở lại vị trí nếu nó không còn ở đó.

Nếu bạn gặp khó khăn khi sao chép lại tệp, hãy thêm một loại trừ vào thư mục dự án của bạn trong trình bảo vệ cửa sổ . ( Tìm hiểu cách thực hiện điều đó tại đây .)

Điều này có hiệu quả với tôi ngay lập tức và tôi đã lặp lại nó trên nhiều máy chủ ứng dụng.


1

Đối với tôi, đó là connectionString trong Startup.cs là rỗng trong:

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

và nó trống vì ứng dụng không tìm kiếm chuỗi kết nối appsettings.json.

Phải thay đổi Program.cs thành:

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();

1

Tôi không biết tại sao điều này lại hiệu quả với tôi, nhưng tôi đang sử dụng Windows Authentication và tôi có chút mã này BuildWebHosttrong Program.cs:

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

Sau khi loại bỏ .UserHttpSysbit, nó hiện hoạt động và tôi vẫn có thể xác thực với tư cách là người dùng miền.

BuildWebHost bây giờ trông giống như

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

Tôi đang xác thực cookie trong lõi aspnet. Làm cách nào để cấu hình?
kudlatiger

@kudlatiger Xin lỗi tôi không chắc chắn - đặt cược tốt nhất của bạn là tạo ra một câu hỏi riêng biệt
Bassie

1

Tôi cũng gặp phải lỗi tương tự và phát hiện ra vấn đề là trong quá trình xuất bản lên Azure, tệp web.config của tôi đã bị sửa đổi nên dòng sau kết thúc như thế này:

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

Vấn đề đối với Sản xuất là nội dung của các đối số: "-argFile IISExeLauncherArgs.txt"

Có vẻ như vấn đề này sẽ được giải quyết trong .NET Core SDK tiếp theo (hiện đang trong bản xem trước), nhưng hiện tại, cách giải quyết là thêm khối này vào tệp .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>

Điều này sẽ sửa đổi web.config và loại bỏ phần có vấn đề để xuất bản.

Tham khảo: https://github.com/aspnet/websdk/issues/242

Hy vọng nó giúp.


Cả hai phần tiêu hao startupTimeLimit và requestTimeout được thêm vào dường như là một lỗi công cụ .
Đánh dấu G

1

Làm việc cho tôi sau khi thay đổi cấu hình xuất bản.

nhập mô tả hình ảnh ở đây


Xin lỗi, tôi không thể xem hình ảnh trong tổ chức của mình. Tải xuống hình ảnh bị chặn (trên hầu hết các tổ chức).
Auguste

0

Tôi đã gặp sự cố tương tự (Asp.Net Core 2.x) do cố gắng chạy ứng dụng lõi 32-bit asp.net trong IIS trên máy chủ windows 64-bit. Nguyên nhân gốc rễ là web.config được tạo tự động (nếu dự án của bạn không bao gồm một cách rõ ràng, dự án cốt lõi asp.net không có theo mặc định) không chứa đường dẫn đầy đủ đến tệp thực thi dotnet. Khi bạn cài đặt gói lưu trữ trên máy 64 bit, nó sẽ cài đặt phiên bản dotnet 64 và 32 bit, nhưng đường dẫn sẽ phân giải theo mặc định thành 64 bit và ứng dụng lõi asp.net 32 ​​bit của bạn sẽ không tải được. Trong trình duyệt của mình, bạn có thể gặp lỗi 502.5 và nếu nhìn vào nhật ký sự kiện máy chủ, bạn có thể thấy mã lỗi 0x80004005. Nếu bạn cố gắng chạy dotnet.exe từ dấu nhắc lệnh để tải dll ứng dụng lõi asp.net của mình trên máy chủ đó, bạn có thể gặp lỗi như "BadImageFormatException" hoặc "

<?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>

0

Tôi gặp vấn đề tương tự và lý do trong trường hợp của tôi là lõi EF đang cố đọc chuỗi kết nối từ appsettings.development.jsontệp. Tôi đã mở nó và thấy chuỗi kết nối đã được nhận xét.

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

Sau đó, tôi đã bỏ cam kết chúng như bên dưới và vấn đề đã được giải quyết:

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=vaio;Database=Goldentaurus;Trusted_Connection=True;",
    "IdentityConnection": "Server=vaio;Database=GTIdentity;Trusted_Connection=True;"
  }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.