LINUX DOTNET      Linux DotNET 中文社区

Linux .NET编程与应用技术之专业网站:www.linuxdot.net !     返回首页    
   
[楼主] Jexus是否不支持dynamic对象?

asp.net 程序中使用了dynamic对象,在jexus中运行提示:Attempted to access a missing method.
请问有没有什么解决方法?但相同的代码用core方式运行可以通过。不知道什么原因。

作者:Jack   发布时间:19年12月04日   可选操作:删除 回复

[1楼] 回复:Jexus是否不支持dynamic对象?

MVC中的路由、ViewData之类的东西,都是dynamic对象,都跑得很好的,为什么说不支持呢?你的代码是什么样的?

作者:yunei   发布时间:19年12月04日   可选操作:删除 回复

[2楼] 回复:Jexus是否不支持dynamic对象?

这是一个转json字符串的程序,Btn_ToJson_Click里面定义的Dictionary对象赋给dynamic后就转换出错了。

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class index : System.Web.UI.Page
{

    protected void Page_Load(object sender, EventArgs e)
    {
        btn_ToJson2.Click += Btn_ToJson2_Click;
        btn_ToJson.Click += Btn_ToJson_Click;
    }

    private void Btn_ToJson_Click(object sender, EventArgs e)
    {

            Dictionary<string, string> dict = new Dictionary<string, string>();
            dict.Add("a", "1");
            dict.Add("b", "2");
            dict.Add("c", "3");

            dynamic dyn = dict;
            string json = JsonConvert.SerializeObject(dyn);


    }

    private void Btn_ToJson2_Click(object sender, EventArgs e)
    {

            Dictionary<string, string> dict = new Dictionary<string, string>();
            dict.Add("a", "1");
            dict.Add("b", "2");
            dict.Add("c", "3");

           
            string json = JsonConvert.SerializeObject(dict);


    }
}

作者:Jack   发布时间:19年12月04日   可选操作:删除 回复

[3楼] 回复:Jexus是否不支持dynamic对象?

这是你那个JsonConvert在.net framework与core上的功能区别吧,与jexus没有任何关系。你应该进一步找找那个josn序列化组件的问题,看看它是否支持动态对象。

作者:yunei   发布时间:19年12月04日   可选操作:删除 回复

[4楼] 回复:Jexus是否不支持dynamic对象?

另外,你直接把字典对象赋值给动态对象变量,好象不太好吧。

作者:yunei   发布时间:19年12月04日   可选操作:删除 回复

[5楼] 回复:Jexus是否不支持dynamic对象?

程序是这样的,我把字典赋值给动态对象变量,只是作为最简单的测试用。我在windows上调试和部署,不管是.net framework或者是core,都能正常运行。Newtonsoft.Json组件版本是12.0,这个组件是支持动态对象序列化的。后来我不用这个组件,测试下面的代码也不行。以下代码没有涉及任何组件.

    private class myTable
    {
        public string id { get; set; }

        public string name { get; set; }

        public string addr { get; set; }


    }

    List<myTable> rec = new List<myTable>()
        {
            new myTable(){id="1",name="a",addr="aa" },
            new myTable(){id="2",name="b",addr="bb" },
            new myTable(){id="3",name="c",addr="cc" },
        };


    private void Btn_ToJson3_Click(object sender, EventArgs e)
    {

            dynamic dyn = rec;            
            string id=(dyn[0].id);//获取失败.

    }

作者:Jack   发布时间:19年12月05日   可选操作:删除 回复

[6楼] 回复:Jexus是否不支持dynamic对象?

mono用的是什么版本?

作者:yunei   发布时间:19年12月05日   可选操作:删除 回复

[7楼] 回复:Jexus是否不支持dynamic对象?

感谢你的及时答复,我用jexus-6.1-x64.tar.gz 专业版安装的。里面说是自带mono了。我也不清楚是什么版本,有没有什么命令输入可以知道mono版本的?

作者:Jack   发布时间:19年12月05日   可选操作:删除 回复

[8楼] 回复:Jexus是否不支持dynamic对象?

查版本号的命令是:/usr/jexus/jws -V 

作者:yunei   发布时间:19年12月05日   可选操作:删除 回复

[9楼] 回复:Jexus是否不支持dynamic对象?

版本信息:
Mono/6.0.0.334 build: 2019.09.20
Jexus/6.1.42 Linux

我是在你们官网下载的专业版安装,没有改动和更新任何程序。

作者:Jack   发布时间:19年12月05日   可选操作:删除 回复

[10楼] 回复:Jexus是否不支持dynamic对象?

版本够新的。
如果你不那个直接将字典对象赋值给一个dynamic对象呢?

作者:yunei   发布时间:19年12月06日   可选操作:删除 回复

[11楼] 回复:Jexus是否不支持dynamic对象?

private class myTable
    {
        public string id { get; set; }

        public string name { get; set; }

        public string addr { get; set; }


    }

    List<myTable> rec = new List<myTable>()
        {
            new myTable(){id="1",name="a",addr="aa" },
            new myTable(){id="2",name="b",addr="bb" },
            new myTable(){id="3",name="c",addr="cc" },
        };


    private void Btn_ToJson3_Click(object sender, EventArgs e)
    {

            dynamic dyn = rec;            
            string id=(dyn[0].id);//获取失败.

    }

这样也运行不了。你试一下这些代码吧。我也是尝试过各种情况的,只要给dynamic赋值,就运行不了。

作者:Jack   发布时间:19年12月06日   可选操作:删除 回复

[12楼] 回复:Jexus是否不支持dynamic对象?

为什么要直接赋值而不转换呢?

作者:yunei   发布时间:19年12月06日   可选操作:删除 回复

[13楼] 回复:Jexus是否不支持dynamic对象?

总有些情况是不能转换的。你就试试这段简单的代码,看看能不能运行,给个答复就是了。

作者:Jack   发布时间:19年12月06日   可选操作:删除 回复

 
   
   

留言回复:
标题: * 标题必填
作者:   * 请填上你的名字  
操作键:   * 填入几个字母表示是您写的,便于进一步操作
发言内容:
 
发贴者须知:
1、您无需注册即可发贴,但是,贴子内容必须在法律法规和社会公德所允许的范围内;
2、本站专注IT技术,谢绝包括政治、社会、情感等任何与IT技术无关的贴子在本站发表;
3、本站保留对任何贴子进行删除、禁用、更改、举报、追究等所有权利;
 
今天是: 周六  周一  周二  周三  周四  周五  周七