根据请求中的某些值(标题或URL),我想更改DTO对象的序列化.为什么?好吧,我已经应用了[JsonProperty("A")]我的DTO,但根据客户端(网站或移动应用程序),它是否想要使用该属性.我开始了
services
.AddMvc()
.AddJsonOptions(opt =>
{
#if DEBUG
opt.SerializerSettings.ContractResolver = new NoJsonPropertyNameContractResolver();
#endif
}
Run Code Online (Sandbox Code Playgroud)
因此,在调试时,我获得了具有完整属性名称的JSON.我使用该JsonProperty属性来缩短响应JSON,这适用于移动应用程序(Xamarin),后者反序列化回到相同的DTO.但现在我有一个网站使用相同的API通过jQuery获取数据,但在那里我想处理DTO的完整属性名称,而不是JsonProperty属性中给出的名称.网站和WebApi位于同一台服务器上,因此如果响应更大,则没有问题.
我开始使用中间件类来对客户标头值做出反应,这有效,但现在我不知道如何进入JSON SerializerSettings.搜索网络但找不到它.
在搜索时我读过有关InputFormatters和OutputFormatters,以及内容协商,但我不知道我必须去哪个方向.
我不想使用不同的设置两次部署相同的API.
如果这会有所帮助,我能够改变routesconfig之类的东西.
更新
不仅JSON响应必须以两种不同的方式序列化,而且反序列化必须以两种不同的方式完成.
我是Delphi的新手,来自Visual Studio,这是一个简单的问题(我猜):当我启动IDE时,如何阻止Delphi 10 Seattle打开最后一个使用项目(组)?
我找到了一些关于.dsk文件的信息及其作用:
.dsk文件记录您当前的设置:
- 桌面布局
- 断点
- 观看物品
- 文件当前在IDE中打开
稍后重新打开项目时,将读取.dsk文件,并恢复桌面布局,断点和手表.此外,无论项目是否使用它们,项目关闭时打开的所有文件都会再次打开.
当我打开一个项目时,我很好.但是,当我启动IDE时请不要打开它.大多数情况下,我想开始或打开另一个项目,而不是我正在处理的最后一个项目.我搜索了选项和互联网,但找不到解决方案.任何人?
当我调试ASP.NET 5 Web应用程序时,它会触及我的断点,但我无法观察本地创建的变量的内容.
使用空项目作为模板的startup.cs中的示例代码:
public void Configure(IApplicationBuilder app)
{
app.UseIISPlatformHandler();
var dummy = DateTime.Now;
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World! " + dummy);
});
}
Run Code Online (Sandbox Code Playgroud)
当我把断点放在"app.Run(...."它击中断点但我看不到变量dummy的内容.如果我添加虚拟来监视它说"错误CS0103:名称'虚拟'不存在在当前的上下文中".虽然我可以看到DateTime.Now的内容,它每次我悬停它时都会给我确切的日期和时间.当我在MVC控制器中放置一个断点并观察变量时,会发生同样的情况.
我正在学习Pluralsight课程,并且我也参与了我在创建该课程时创建的项目,以及课程附带的示例文件.
在调试期间VS2015连接到dnx.exe进程在视频中我看到VS2015连接到IISExpress.exe进程.但那个课程是从11月开始的.2015年也许有些事情发生了变化.
重启机器没有帮助.
这是我在这里的第一个问题,如果需要更多信息请告诉我,我会尽力提供.