1
我想通過JavaScript將一個字節數組傳遞給我的WebMethod。 問題是我的WebMethod返回消息「測試表單僅適用於原始方法作爲參數。」如何在WebMethod中接收非原始數據?
當我將數據類型更改爲字符串或任何其他類型的原始變量時,WebMethod接受它。
我正在將一個對象轉換爲一個byte [],使用MessagePack命名爲msgpackEnvio(轉換本身發生的很好),然後發送到WebService。
這裏是我的請求的WebService使用jQuery
$.ajax({
beforeSend: function (request) {
request.setRequestHeader("Content-Type", "application/json");
},
processData: false,
dataType: "json",
url: url,
data: msgpackEnvio,
type: "POST",
error: function (data) {
$('#upload-load').hide();
$('.bt-enviar-excel').removeAttr('disabled', 'disabled');
var msg = document.getElementsByClassName('msg')[0];
msg.style.color = 'red';
msg.innerHTML = 'Erro interno servidor!';
},
success: //some code
事實上,上面的代碼不會在所有問題,我的問題是在web服務,以及如何使它得到一個數組或者是一個對象。
而且這裏是我的WebMethod,應該是能夠接收一個byte []
[WebMethod]
public string TestMessagePack(byte[] name)
{
//my code
return "Finish";
}
我試了一下,但我想解決的問題正是這一個。當我讀取一些對象時,我的json變得如此之大,以至於連接到WebService需要很長時間,甚至有時會出現時間連接錯誤。 我真的需要改變WebService方法來接收非原始語言 –
javascript如何知道構建C#可以理解的非原始對象?複雜的對象將依賴於他們的語言和環境,因爲他們在引擎蓋下看起來像是什麼樣子,所以爲了彌補這種差距,序列化發揮了作用。複雜對象需要以某種方式被序列化爲一個字符串(這兩個層都知道如何處理的基本類型),以便將字符串發送並反序列化爲複雜對象以接收。 JSON/XML/etc和base64在這裏是你的朋友。 –
一些更簡單的類型將能夠自動序列化和反序列化,儘管這不是我依賴的東西,如果它們變得更復雜,則需要移至諸如json或xml之類的東西。這個錯誤消息來自哪裏?它不在引用的代碼中,也不是標準的錯誤消息。 –