Tôi hiện đang sử dụng jquery ajax để gọi một pagemethod (hoạt động tốt);Truy cập webmethod với jquery
$.ajax({
type: "POST",
url: "ArticleList.aspx/GetArticleTags",
data: "{'articleId' : " + articleId + "}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
if (msg.hasOwnProperty("d")) { msg = msg.d; }
var tags = JSON.parse(msg);
//do something
}
});
Từ xa;
<WebMethod()>
Public Shared Function GetArticleTags(ByVal articleId As Integer) As String
Using myDb As New MyRepository
Dim js As New JavaScriptSerializer
Dim returnString = js.Serialize((From t In myDb.GetArticleTags(articleId) Select t.TagId, t.Tag).ToList)
Return returnString
End Using
End Function
Tôi hiện đang ở vị trí mà tôi cần truy cập chức năng GetArticleTags từ nhiều trang. Để nhanh chóng thiết lập và chạy, tôi có thể
- Sao chép chức năng vào trang aspx mới của tôi và gọi nó theo cùng một cách.
- Tiếp tục trỏ đến trang aspx gốc.
Cả hai đều khá là rác rưởi.
Vì vậy, cách hợp lý duy nhất còn lại là gọi phương thức wcf (webget). Điều này sẽ có lợi ích của ý nghĩa tôi sẽ không phải tự serialize các đối tượng để json. Nó sẽ được thực hiện cho tôi.
Tôi có một webservice an toàn trong giải pháp đã có, nhưng tôi cảnh giác về việc gọi nó từ webapp của tôi. Tôi muốn tất cả các mã sống trong webapp của tôi, không phụ thuộc vào một dịch vụ web mà sẽ được trong một hồ bơi ứng dụng khác nhau trên cùng một máy chủ iis. Nó có thể cần phải được bắt đầu lạnh, và tôi cần điều này để được nhanh chóng.
Tôi đã thêm tệp wcf vào ứng dụng web của mình bằng mẫu "Dịch vụ WCF bật AJAX". Nhưng sau đó bằng cách làm điều này, tôi muddying lên webapp của tôi với các thiết bị đầu cuối trong web.config vv (và tôi hiện đang nhận được 500 System.ServiceModel.ServiceActivationException ngoại lệ của)
Vì vậy, xuống câu hỏi của tôi ... Cách tốt nhất để gọi hàm của tôi là gì? (Tôi nghĩ đó là dịch vụ web an toàn của tôi) Có tùy chọn nào khác mà tôi không xem xét không?
Cảm ơn nhiều.
Tôi đã thực sự creaste như asmx dịch vụ .... nhưng sau đó nghĩ nahhhh, và kịp thời xóa nó nó (wcf luôn luôn thắng trên asmx cho tôi những ngày này [nhưng cho các dịch vụ web thích hợp]). Nhưng có lẽ là đúng, nó sẽ là giải pháp * tốt nhất * trong tình huống của tôi. – GordonB