2011-07-17 44 views
8

Tôi có một chế độ xem một phần được hiển thị trên trang không phải HTTPS, nhưng POSTS tới bộ điều khiển yêu cầu SSL. Định dạng biểu mẫu là:Url.Không bao gồm số cổng

 <form id="authForm" 
      method="post" 
      action="@Url.Action("authenticate", "auth", new {}, "https")"> 

Vấn đề tôi gặp phải là trong Visual Studio và khi gỡ lỗi, máy chủ và cổng là localhost:64043. Tuy nhiên, cuộc gọi Url.Action ở trên không đưa số cổng vào, nghĩa là trình duyệt hướng đến cài đặt IIS của tôi. Tôi có phải thêm cái gì khác hoặc ghi đè phương pháp này không? Tôi muốn ứng dụng của tôi là vị trí bất khả tri.

Cảm ơn trước!

Trả lời

10

Bạn có thể bao gồm nó như thế này:

@Url.Action(
    "authenticate", 
    "auth", 
    null, 
    "https", 
    Request.Url.Host + ":" + Request.Url.Port 
) 

Tất nhiên điều này có nghĩa là máy chủ web địa phương của bạn phải hỗ trợ SSL mà không phải là trường hợp với Cassini. Bạn có thể sử dụng IIS Express để làm việc này.

+0

Xin chào, cảm ơn rất nhiều vì điều này. Hóa ra IIS Express đã được cài đặt rồi. Tuy nhiên, vấn đề tôi gặp phải là mặc dù IIS cho thấy một chứng chỉ Express được cài đặt, tôi nhận được 'Không thể tạo kết nối an toàn tới máy chủ. Điều này có thể là một vấn đề với máy chủ hoặc nó có thể yêu cầu chứng chỉ xác thực ứng dụng khách mà bạn không có.' như một lỗi khi nó cố gắng đăng biểu mẫu ... argh! –

0

Máy chủ phát triển tích hợp không hỗ trợ HTTPS, nhưng bạn có thể sử dụng IIS cục bộ của mình - xem HERE.

0

Kết nối Http và https thường trên hai cổng khác nhau, do đó nếu bạn thay đổi từ giao thức này sang giao thức khác, bạn cần sử dụng cổng chuẩn hoặc tự cung cấp cổng cụ thể. Không có cách nào hợp lý để một hệ thống chung có thể xác định đúng cổng