Tôi có một công việc web liên tục lắng nghe các yêu cầu chứa thông tin chẩn đoán.
Để kiểm tra kết nối, tôi cố gắng kiểm tra sức khỏe trong công việc web của mình nhưng không thể thực hiện yêu cầu tới localhost theo tài liệu dịch vụ ứng dụng azure.
Mã dưới đây là những gì tôi sử dụng để xác minh rằng tôi có thể kết nối từ ứng dụng tôi triển khai:
var uri = new Uri("http://localhost:8989/ping");
var response = await client.GetAsync(uri);
Tôi nhận được ngoại lệ này:
System.Net.Http.HttpRequestException: An error occurred while sending the request.
---> System.Net.WebException: Unable to connect to the remote server
---> System.Net.Sockets.SocketException: An attempt was made to access a socket in a way forbidden by its access permissions 127.0.0.1:8989
Công việc web được cài đặt thông qua tập lệnh cài đặt tiện ích mở rộng trang web thông qua Kudu (SCM), điều đó có nghĩa là công việc web cuối cùng là một quá trình con của Kudu (SCM). Ứng dụng công việc web khi khởi động liên kết với cổng 8989. Bắt đầu ứng dụng cục bộ trên windows, tôi có thể kiểm tra sức khỏe của mình mà không gặp vấn đề gì.
Tài liệu dịch vụ ứng dụng azure nói rằng các yêu cầu tới localhost sẽ không thành công trừ khi một ứng dụng trong cùng hộp cát liên kết với cổng ( https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#local-address- yêu cầu ).
Tài liệu dịch vụ ứng dụng azure nói rằng Kudu chạy trong cùng hộp cát với ứng dụng chính ( https://github.com/projectkudu/kudu/wiki/Kudu-arch architecture # security-model ).
Làm cách nào để tôi có thể liên lạc với công việc web của mình qua http?
Tốt hơn là đó là điều mà tôi có thể làm từ quy trình cài đặt tiện ích mở rộng trang web, nhưng mọi tùy chọn đều tốt.
Cập nhật 12-26-2019:
Tôi đã cố gắng buộc SCM và ứng dụng chính chạy trong cùng một hộp cát với WEBSITE_DISABLE_SCM_SEPARATION=true
( https://github.com/projectkudu/kudu/wiki/Configurable-sinstall#use-the-same- Process-for-the-user- trang web và trang web scm ).
Tài liệu nói rằng họ đã chạy trong cùng một hộp cát và nếu một quy trình lắng nghe trên một cổng trong cùng một hộp cát, những yêu cầu đó sẽ hoạt động. Đáng chú ý, quá trình SCM w3wp.exe thực tế đã có thể truy cập localhost bằng http cho công việc web của tôi. Cài đặt này dường như không cải thiện tình hình.
Cập nhật ngày 04/02/2016:
Tôi chính thức từ bỏ ý tưởng sử dụng một công việc web và bây giờ tôi bắt đầu quá trình như một đứa trẻ của ví dụ ứng dụng chính. Điều này cho phép tôi giao tiếp localhost:8989
mà không có vấn đề.
Mặc dù bây giờ tôi cần quản lý logic của riêng tôi.
Tôi vẫn muốn biết liệu có cách nào để giao tiếp qua TCP với một công việc web nếu điều đó là có thể.
WebJobs
vì chúng chạy bên trong một IHost
container. Chi tiết bổ sung có sẵn trong câu trả lời của tôi.