Bir nechta parametrni WCF veb-API xizmatiga o'tkazing

Men WCF-Web xizmatini yaratishda sodir bo'layotgan sahnalar sehrining ortida merak qilaman.

Qadimgi loyihada JavaScript-ni yoqadigan usullardan foydalanishim mumkin

[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
IEnumerable SearchObjects(string x, int y, double z);

Va bu JavaScript ("x": "bir", "y": 1, "z": 1.5} yuborganimda ishlaydi.

Ushbu veb-brauzer yaratilishidan bir necha oy o'tgach, men WCF veb-API-ni topdim va shunga o'xshash narsa qilishga harakat qildim.

Farq shundaki, men Global.asax-da marshrutni HttpServiceHostFactory() bilan yaratdim.

Endi usulni chaqirishga harakat qilsam, men bunga o'xshash istisno qilaman

Istisno Tafsilotlar: System.InvalidOperationException: HttpOperationHandlerFactory, 'Invoke_LoginRequest' xizmat ko'rsatish operatsiyalari uchun spam-xabar mazmuni bilan bog'langan kiritish parametrini aniqlay olmadi. Agar operatsiyani spam-xabarda tarkib kutmasa, operatsiya bilan HTTP GET usulidan foydalaning. Aks holda, bitta kirish parametrining "Ishonchli" parametri yoki "rost" ga o'rnatilgan bo'lishi yoki quyidagilardan biri uchun tayinlanishi mumkin: HttpContent, ObjectContent 1, HttpRequestMessage yoki HttpRequestMessage 1.

Va uni ishga olish uchun, shunga o'xshash usuli (VB.Net)

Public Function Invoke_LoginRequest(ByVal request As HttpRequestMessage(Of JsonValue)) As HttpResponseMessage(Of String)

Ammo keyin JsonValue-ni qo'l bilan ajratib olishim kerak. Xo'sh, eski versiya qanday ishlaydi? Va bu xatti-harakatlarimni qaytarib olsam bo'ladimi?

Yaxshi tilaklar Jesper

0
Bunga maqbul qaror topdingizmi? URL kodlangan POST tanasidan shunga o'xshash, lekin deserilashuvchi qidiraman.
qo'shib qo'ydi muallif stevenrcfox, manba

1 javoblar

1) olishni istagan ma'lumotni o'z ichiga olgan sinfni belgilang, ya'ni,

public class Model
{
    public string x { get; set; }
    public int y { get; set; }
    public double z { get; set; }
}

2) Define the operation parameter as an ObjectContent

public HttpResponseMessage Post(ObjectContent c){
    Model m = c.ReadAs();
    ...
}

HTH Pedro

0
qo'shib qo'ydi
Modelni modul sifatida qabul qiladigan operatsiyani bajaruvchini qo'shishingiz mumkin va har bir a'zolarni chiqaradi. Keyin, bu shaxsiy a'zolar operatsiya parametrlari bo'lishi mumkin
qo'shib qo'ydi muallif Pedro Felix, manba
Ha, bu juda og'ir ekaniga ham roziman. Shu bilan bir qatorda quyidagilar bo'lishi mumkin: 1) HttpRequestMessage ishlov beruvchisi usuli sifatida; 2) har bir operatsiya parametri uchun (barcha oddiy turlari) JsonValue 3) bo'lib, tarkibni JsonValue'dan qabul qiling.
qo'shib qo'ydi muallif Pedro Felix, manba
Bu biroz yaxshiroq, lekin avtomatik JSON-ketma-ketlash qaerga ketdi? Va baribir men buni o'zim qila olamanmi? Shuning uchun parametrlarni birinchi misolda topshirishim mumkin.
qo'shib qo'ydi muallif HerrLiljegren, manba
Shunday qilib, veb-brauzerga ta'sir qiladigan har bir usul uchun model-ob'ekt kerak? Mana bu tovushlar, noqulay ... Guesss men operatsiya parametrlariga o'zgartiradigan maxsus operatsiyani bajaruvchi qilib ishlashga harakat qilaman.
qo'shib qo'ydi muallif HerrLiljegren, manba