2016-03-30 36 views
5

Tôi đang đối mặt với các vấn đề trong khi chạy ứng dụng của tôi được xây dựng trên ASP.NET Core bằng cách sử dụng Docker trong Visual Studio. Ứng dụng của tôi chỉ sử dụng khung công tác dnxcore50. tập tin project.json của tôi là:ASP.NET Core - Các vấn đề trong khi gỡ lỗi thông qua Docker trong Visual Studio 2015

{ 
    "version": "1.0.0-*", 
    "compilationOptions": { 
    "emitEntryPoint": true 
    }, 
    "dependencies": { 
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final", 
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final", 
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final", 
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final" 
    }, 
    "frameworks": { 
    "dnxcore50": { } 
    }, 
    "exclude": [ 
    "wwwroot", 
    "node_modules" 
    ], 
    "publishExclude": [ 
    "**.user", 
    "**.vspscc" 
    ], 
    "commands": { 
    "web": "Microsoft.AspNet.Server.Kestrel" 
    } 
} 

Tôi đã thử phương pháp sau đây:

  1. Khi điểm dnvm tôi để thời gian chạy DNX-coreclr-win-x64.1.0.0-rc1-Update1 như thể hiện trong hình dưới đây.

enter image description here

Ứng dụng của tôi được xây dựng thành công. Nhưng, tôi nhận được lỗi sau trên chạy/gỡ lỗi các ứng dụng trên Docker và ứng dụng của tôi bị mắc kẹt tại "trang web mở http://192.168.99.100:5000" chi tiết enter image description here

Lỗi: Khung thời gian chạy hiện tại không tương thích với 'ứng dụng' Các khung thời gian chạy hiện tại: 'DNX, Phiên bản = v4.5.1 (dnx451)' Hãy đảm bảo thời gian chạy khớp với khung được chỉ định trong project.json

  1. Như thông báo lỗi trên cho thấy có sự không phù hợp trong khung công tác, tôi đã thay đổi thời gian chạy mặc định và hoạt động thành dnx-coreclr-linux-x64.1.0.0-rc1-update1 bằng cách sửa đổi bí danh mặc định và lệnh thực thi dnvm use default -p. Sau đó, tôi khởi động lại VS của tôi (để đảm bảo các thay đổi có thể nhìn thấy trong VS).

enter image description here

Tuy nhiên, ứng dụng của tôi vẫn được xây dựng trên DNX phiên bản v4.5.1 như đề xuất trong xây dựng các bản ghi dưới đây:

1> Information: [LoaderContainer]: Load name=Microsoft.Dnx.Tooling 
1> Information: [PathBasedAssemblyLoader]: Loaded name=Microsoft.Dnx.Tooling in 2ms 
1> Information: [Bootstrapper] Runtime Framework: DNX,Version=v4.5.1 
1> Microsoft .NET Development Utility Mono-x64-1.0.0-rc1-16231 

Do đó, việc áp dụng một lần nữa thất bại trong việc chạy với lỗi tương tự như trong điểm 1.

Ngoài ra, khi thay đổi khôi phục thời gian chạy mặc định dnu ngừng hoạt động từ dòng lệnh và đưa ra lỗi sau:

'dnu' is not recognized as an internal or external command, operable program or batch file.

Điều thú vị là lệnh khôi phục 'dnu' tiếp tục hoạt động từ VS (như được đề xuất trong nhật ký xây dựng VS).

  1. Sau đó, tôi đã cố gắng thay đổi thời gian chạy dnvm thành dnx-mono.1.0.0-rc1-update1. Nhưng nó không thành công với lỗi sau:

Cannot find dnx-mono.1.0.0-rc1-update1.1.0.0-rc1-update1, do you need to run 'dnvm install default'? At C:\Program Files\Microsoft DNX\Dnvm\dnvm.ps1:1659 char:9 + throw "Cannot find $runtimeFullName, do you need to run '$Com ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : OperationStopped: (Cannot find dnx...stall default'?:String) [], Run timeException + FullyQualifiedErrorId : Cannot find dnx-mono.1.0.0-rc1-update1.1.0.0-rc1-update1, do you nee d to run 'dnvm install default'?

runtime Những gì tôi cần phải sử dụng để chạy Docker từ VS và làm thế nào tôi có thể thay đổi nó? Yêu cầu sự giúp đỡ của bạn để giải quyết vấn đề.

Cập nhật cuối cùng tôi đã có thể giải quyết vấn đề bằng cách thay đổi các tập tin Docker dòng đầu tiên để FROM microsoft/aspnet:1.0.0-rc1-update1-coreclr TỪ microsoft/aspnet:1.0.0-rc1-update1. Cảm ơn @bertt cho mẹo.

+0

Hãy ghi lại nội dung của tất cả các ảnh chụp màn hình để có thể đọc văn bản (khi nhỏ), khi có trung bình như nguồn cấp dữ liệu cung cấp không cho phép hình ảnh), có thể được đọc (khi liên kết hình ảnh cuối cùng bị hỏng) và có thể được tìm kiếm. – ErikE

+0

@ErikE đã thêm chi tiết hình ảnh làm văn bản –

Trả lời

2

dòng đầu tiên của dockerfile của bạn là gì? phải là 'TỪ microsoft/aspnet: 1.0.0-rc1-update1-coreclr' cho CoreClr

+0

Dòng đầu tiên của tệp docker là: FROM microsoft/aspnet: 1.0.0-rc1-update1 –

+0

@Bret, tôi đã có tệp docker được tạo mặc định từ Visual Studio. Phiên bản đó có phiên bản thời gian chạy sai. để 'TỪ microsoft/aspnet: 1.0.0-rc1-update1-coreclr' đã giúp giải quyết vấn đề. Nhờ sự giúp đỡ của bạn. –

1

tôi đọc về điều này trong một bài tương tự ở đây trên stackoverflow

Vấn đề có thể là Kestrel chỉ lắng nghe để localhost theo mặc định.

Bạn có thể muốn thay đổi dockerfile của bạn có chứa:

ENTRYPOINT ["dnx", "web", "--server.urls", "http://0.0.0.0:5000"] 

hoặc cách khác chỉ thay đổi phần cuối của project.json của bạn để

"commands": { 
    "web": "Microsoft.AspNet.Server.Kestrel --server.urls http://0.0.0.0:5000" 
    } 

cũng có thể làm việc.

+0

Hi Bauer, cảm ơn sự giúp đỡ của bạn. Tôi đã cố gắng để thay đổi dockerfile và project.json của tôi, nhưng nó đã không giúp đỡ. :( –

Các vấn đề liên quan