我从C#调用REST端点,我收到json,它被序列化为一个对象.此对象的一个属性是动态属性.动态属性的值在服务器站点上设置为匿名对象,如下所示:
myObject.MyDynamicProp = new { Id = "MyId2134", Name = "MyName" };
Run Code Online (Sandbox Code Playgroud)
在客户端站点上,json序列化的动态属性值是一个包含以下值的JObject:
{{
"id": "MyId2134",
"Name": "MyName"
}}
Run Code Online (Sandbox Code Playgroud)
我希望能够访问这样的属性:
var s = myObject.MyDynamicProp.Name;
Run Code Online (Sandbox Code Playgroud)
但它没有找到Name属性,而是我必须得到这样的值:
var s = myObject.MyDynamicProp["Name"].Value;
Run Code Online (Sandbox Code Playgroud)
我尝试将JObject转换为这样的动态对象,但它返回JObject:
var dyn = myObject.MyDynamicProp.ToObject<dynamic>();
Run Code Online (Sandbox Code Playgroud)
如何转换动态属性值,以便我可以直接调用其属性?
var s = myObject.MyDynamicProp.Name;
Run Code Online (Sandbox Code Playgroud)
更新......
我跑了以下
dynamic d = JsonConvert.DeserializeObject("{\"MyDynamicProp\": {\"id\": \"MyId2134\", \"Name\": \"MyName\"}}");
string name = d.MyDynamicProp.Name;
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
{Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: `Newtonsoft.Json.Linq.JObject' does not contain a definition for `MyDynamicProp'
at Microsoft.Scripting.Interpreter.ThrowInstruction.Run (Microsoft.Scripting.Interpreter.InterpretedFrame frame) [0x00027]
Run Code Online (Sandbox Code Playgroud)
我想补充一点,这是一个Xamarin iOS项目,代码位于PCL库中.
我假设我的代码有问题,但看起来在Xamarin iOS项目中不可能使用动态类型. https://developer.xamarin.com/guides/ios/advanced_topics/limitations/
在Visual Studio中选择ASP.NET Web应用程序项目时,此错误适用于单页面应用程序模板.将有效的Facebook appId和appSec添加到Startup.Auth.cs文件,以使用外部登录测试演示.
我能够登录到Facebook,但前提是在js变量siteUrl中app.datamodel.js中定义的重定向url 设置为'/'.正如所料,当在AccountController内调用GetExternalLogin REST函数时,用户被发送到Facebook页面进行外部登录.如果我在GetExternalLogin中放置一个断点,它也会被触发.
但是,如果我将app.datamodel.js中的siteUrl更改为其他任何内容,例如'/ dummyController',则根本不会触发断点,而是响应会给出消息错误:invalid_request
知道为什么这不起作用吗?谢谢!
我一直在使用Xamarin构建一个具有非常自定义布局的iOS应用程序.我的计划是在Xamarin Android中构建完全相同的应用程序.我渴望这样做,我也有兴趣了解Android,但重复工作很多.Xamarin Forms在一些扩展中跨平台共享GUI代码,但它让我想知道是否有任何计划在iOS和Android之间自动转换代码.自动转换可以节省大量时间,并允许开发人员选择自己喜欢的平台进行开发.
有一些网站,如https://www.myappconverter.com/和http://www.apportable.com/,用于在母语之间进行转换,不确定它们的可靠程度.我的问题是,是否有任何未来计划或开源项目将Xamarin iOS自动转换为Android,反之亦然?
谢谢!
我正在提取这样的 zip 文件
ZipFile.ExtractToDirectory(zipFile, extractTo);
Run Code Online (Sandbox Code Playgroud)
但我得到了
{"Could not find a part of the path 'C:\\....many subfolders\\Extremely long filename'."}
Run Code Online (Sandbox Code Playgroud)
该 zip 文件包含一个路径很长的文件,文件名总共约 280 个字符。我不确定这是否是我启用长路径的问题,如此处所示https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-在 Windows-10/ 上
如果我在资源管理器中打开路径,它会打开,但具有长文件名的文件不存在。如果我打开 zip 文件,该文件就在那里,因此提取长文件名的文件似乎存在问题。
是否可以在 zip 提取过程中跳过文件或允许提取长文件名的文件?
我正在使用 Azure Functions 版本 3 创建一个 post 端点。在 Asp.net 中,使用 [FromBody] 标记获取 post 对象非常方便,并且模型绑定会发生奇迹。有没有办法在 Azure Functions v3 中使用 FromBody 标签?
我有一个分叉的 Azure git web 项目,正在 Visual Code 中开发。我希望这个项目能够反映它所派生的主控的最新代码。分叉项目永远不应该与主项目合并,因为它是产品的独立版本。
从master获取最新代码的推荐方法是什么?
我可以直接在 VS Code 中执行此操作还是需要在 Visual Studio 中处理此操作?
Azure 对分叉处理的解释:
在遵循此示例文档后,我正在尝试弄清楚如何使用 Swagger (SwashBuckle) 发布 .net core 3 API 。所以它可以在本地运行,当我按 F5 IIS Express 时,会在下面启动该网站http://localhost:8033/index.html
这是startup.cs中的配置代码:
\npublic void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)\n {\n if (env.IsDevelopment())\n {\n app.UseDeveloperExceptionPage();\n }\n\n app.UseRouting();\n\n app.UseAuthorization();\n\n app.UseEndpoints(endpoints =>\n {\n endpoints.MapControllers();\n });\n\n app.UseStaticFiles(new StaticFileOptions\n {\n FileProvider = new PhysicalFileProvider(env.ContentRootPath),\n RequestPath = new PathString("")\n });\n\n app.UseSwagger();\n app.UseSwaggerUI(c =>\n {\n c.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");\n c.DocumentTitle = "TestAPI";\n c.DocExpansion(DocExpansion.None);\n c.RoutePrefix = string.Empty; \n }); \n }\nRun Code Online (Sandbox Code Playgroud)\n接下来,我将 API 发布到本地文件夹,并将文件复制到服务器上的 IIS 文件夹。如果我打开服务器 API 域,我会得到一个page can\xe2\x80\x99t be found …
我需要使用分页查询索引,并且该索引包含大量文档。查询还应按字段之一进行分组。是否可以按 Azure 搜索中的字段进行分组?
谢谢!
我在Visual Studio中更新了Xamarin iOS,并且调试停止了对可移植库的工作,但它在iOS项目中工作.
但是,如果我将调试从iPhoneSimulator更改为iPhone,反之亦然,pcl内的断点开始工作,但如果我更改pcl内的代码,则断点不会再出现.
这些是我正在使用的版本.Xamarin 3.11.445.0 Xamarin.iOS 8.10.0.0 Visual Studio 2013版本12.0.31101.00更新4
有点令人沮丧的是无法调试,花了一整天试图解决这个问题:s
谢谢!
我正在使用构建工具2017在TFS2017 Update 3上构建Web服务项目。出现以下错误
C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ Microsoft.CSharp.CurrentVersion.targets(322,5):错误MSB4019:导入的项目“ C:\ Program Files(x86) )\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ Roslyn \ Microsoft.CSharp.Core.targets”未找到。确认声明中的路径正确,并且文件在磁盘上。
我需要采取什么步骤来解决此错误?
c# ×5
xamarin ×3
azure ×2
.net ×1
android ×1
asp.net-core ×1
asp.net-mvc ×1
azure-devops ×1
facebook ×1
git ×1
iis ×1
io ×1
ios ×1
javascript ×1
json ×1
json.net ×1
msbuild ×1
nuget ×1
swagger ×1
swashbuckle ×1
tfs ×1
visual-studio-2017-build-tools ×1
xamarin.ios ×1
zip ×1