Здравствуйте, в эти дни я создаю децентрализованный веб-API с использованием .net core 2.2 и библиотеки nethereum. Сейчас я нахожусь в критической ситуации, потому что, когда я пытаюсь вызвать функцию умного контракта, которая имеет несколько входных и выходных параметров через nethereum, произошла следующая ошибка.
Произошло необработанное исключение при обработке запроса.
NotSupportedException: System.Int32 не поддерживается
Nethereum.ABI.Decoders.StringTypeDecoder.Decode (byte [byte [] закодировано, введите тип)
Я гуглю по этому поводу, но любая найденная статья не помогла мне решить эту проблему. Поэтому, если кто-нибудь может мне помочь, я очень признателен.
Вот моя умная контрактная функция
function test(string memory x, uint256 y, bool z) public view returns(string memory _x,
uint256 _y, bool _z){
return(x, y, z);
}
Вот мой подход к вызовуфункция, использующая ядро .net
[FunctionOutput]
public class Test : IFunctionOutputDTO
{
[Parameter("string", "_x", 1)]
private string X { get; set; }
[Parameter("uint256", "_y", 2)]
private bool Y { get; set; }
[Parameter("bool", "_z", 3)]
private bool Z { get; set; }
[Function("test")]
public class TestFunction : FunctionMessage
{
[Parameter("string", "x", 1)]
public string X { get; set; }
[Parameter("uint256", "y", 2)]
public string Y { get; set; }
[Parameter("bool", "z", 3)]
public bool Z { get; set; }
}
Внутри моей службы я вызываю контракт
public async Task<Test> Test(TestBody body)
{
var dataset = new TestFunction
{
X = body.x,
Y = body.y,
Z = body.z
};
var testHandler = web3.Eth.GetContractQueryHandler<TestFunction>();
var response = await testHandler.QueryDeserializingToObjectAsync<Test>(dataset, contractAddress);
return response;
}
Здесь тело это просто объект сопоставленного тела запроса с
public string x;
public BigInteger y;
public bool z;