使用 .Net Core 3 的新 System.Text.Json JsonSerializer,如何自动转换类型(例如 int 到 string 和 string 到 int)?例如,这会引发异常,因为id在 JSON 中是数字,而在 C# 中需要Product.Id一个字符串:
public class HomeController : Controller
{
public IActionResult Index()
{
var json = @"{""id"":1,""name"":""Foo""}";
var o = JsonSerializer.Deserialize<Product>(json, new JsonSerializerOptions
{
PropertyNameCaseInsensitive = true,
});
return View();
}
}
public class Product
{
public string Id { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Newtonsoft 的 Json.Net 很好地处理了这个问题。如果您在 C# 期望字符串时传入数值并不重要(反之亦然),一切都按预期反序列化。如果您无法控制作为 JSON 传入的类型格式,您如何使用 System.Text.Json 处理此问题?
使用Facebook的Graph API,我成功地在用户离线时发布到用户的Feed,只有publish_stream权限.我不需要offline_access权限.我在这里解释了我是如何做到的:Facebook Stream在离线时发布
当用户离开时,我没有成功发布到页面.这是我的情景:
用户U是Page P. P的管理员,授权并安装我的应用程序.U授权我的应用程序并授予我以下扩展权限:
一旦用户离线,如果我尝试使用相同的技术发布到用户的流(没有offline_access权限)而是发布到页面,我得到"用户没有授权应用程序执行此操作".这是技术:
1)获取我的应用程序的access_token
2)使用我的应用程序的access_token发布到Page P的提要: POST https://graph.facebook.com/ {page_id}/feed
如果在步骤2中使用{user_id}代替{page_id},那么它会毫无问题地发布到用户的Feed.但是,我想发布到Page的Feed.是否有可能做到这一点?或者我是否需要用户的offline_access权限才能执行此操作?
谢谢,约翰尼
我正在使用 GitHub 操作设置可重用的工作流程:https://docs.github.com/en/actions/learn-github-actions/reusing-workflows
由于被调用者工作流程和调用者工作流程都位于同一存储库中,因此我想在调用工作流程的uses语句中引用被调用工作流程的最新提交。
例子:
uses: owner/repo/.github/workflows/called-workflow.yml@${{GITHUB_SHA}}
Run Code Online (Sandbox Code Playgroud)
这${{GITHUB_SHA}}不会被插值,所以我收到以下错误:
Invalid workflow file : .github/workflows/calling-workflow.yml#L1
handling usage of workflow "owner/repo/.github/workflows/called-workflow.yml@${{GITHUB_SHA}}": can't obtain workflow file: reference to workflow should be either a valid branch, tag, or commit
Run Code Online (Sandbox Code Playgroud)
ref在工作流程中调用工作流程时,如何将其设置为最新提交?
Brad Wilson在ASP.NET MVC的新ModelMetaData上发布了一个很棒的博客系列:http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-2-modelmetadata.html
在其中,他描述了如何在Views和模板化助手中公开ModelMetaData类.我想要做的是如果字段是必需的,在表单字段标签旁边显示一个星号,所以我考虑使用ModelMetaData的IsRequired属性.但是,默认情况下,IsRequired对于所有非可空属性都是true,而对于所有可为空的属性都是false.问题是,字符串总是可以为空的,因此字符串的IsRequired属性始终为false.有谁知道如何覆盖IsRequired的默认设置?或者,我考虑利用我一直在用我的属性装饰的RequiredAttribute属性,但似乎没有通过ModelMetaData类公开RequiredAttribute.有谁知道如何解决这个问题?
提前致谢.
我正在使用Underscore模板(基于John Resig的Microtemplate),每当我尝试更换其中的换行符时,我都会遇到奇怪的行为.例如,如果我有这样的文字:
var message = 'Line1\r\n\r\nLine2';
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我可以用br标签正确替换换行符:
$('#example1_no_template').html(message.replace(/\r?\n/g, '<br />'));
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试用下面的示例代码替换Underscore模板中的换行符,我不会插入任何br标签:
<script id="template1" type="text/html">
<%= message.replace(/\r?\n/g, '<br />') %>
</script>
<script>
var template1 = _.template($('#template1').html());
$('#example1_template').html(template1({ message: message }));
</script>
Run Code Online (Sandbox Code Playgroud)
奇怪的是,如果我将模板中的正则表达式更改为以下内容,那么我会在各处插入各种br标签:
<script id="template3" type="text/html">
<%= message.replace(/[\r\n?]/g, '<br /><br />') %>
</script>
Run Code Online (Sandbox Code Playgroud)
所有这些行为都显示在这个小提琴中:http://jsfiddle.net/GHtDY/5/
知道发生了什么事吗?是否可以替换模板中的换行符?
javascript regex templates underscore.js underscore.js-templating
我正在设计一个REST API,我正在寻找更新对象图的推荐最佳实践.我的问题最好在一个例子中解释,所以让我说我有一个GET资源如下:
URI:/ people/123
此URI返回如下对象图:
{
"name":"Johnny",
"country":{"id":100,"name":"Canada"},
"likes":[
{"id":5,"name":"Fruit"},
{"id":100,"name":"Sports"}
]
}
Run Code Online (Sandbox Code Playgroud)
当允许API使用者更新此资源时,您希望通过PUT或PATCH更新对象?更新"name"属性非常简单,但我不确定"country"或"likes",因为消费者只能改变与其他对象的关系而不能创建新对象.
以下是请求更新的一种方法:
{
"name":"Bob",
"countryId":200
"likeIds":[3,10,22]
}
Run Code Online (Sandbox Code Playgroud)
此更新将资源更改为以下内容:
{
"name":"Bob",
"country":{"id":200,"name":"United States of America"},
"likes":[
{"id":3,"name":"Cars"},
{"id":10,"name":"Planes"},
{"id":22,"name":"Real Estate"}
]
}
Run Code Online (Sandbox Code Playgroud)
这种设计明确而明确地要求消费者只更新"人物"的"ID",但我担心PUT/PATCH的对象图看起来与GET不同,这使得API难以学习和记忆.所以另一种选择是按如下方式请求PUT/PATCH:
{
"name":"Bob",
"country":{"id":100},
"likes":[
{"id":3},
{"id":10},
{"id":22}
]
}
Run Code Online (Sandbox Code Playgroud)
这将产生与先前更新相同的更改,并且不会更改对象图.但是,API消费者并未明确只能更新"ID".
在这种情况下,建议采用哪种方法?
ASP.NET服务的app_offline.htm文件返回http状态503.这是大多数情况下的正确行为.但是,在请求特定URL的情况下(例如https://www.mywebsite.com/monitor),我想将返回的http状态更改为200,同时在所有其他情况下仍返回http状态503.这可能吗?
我之所以这样做是因为每当我们在我们的网站上进行定期维护时,我们都会使用app_offline.htm文件,但我们不希望我们的正常运行时间监控服务(Pingdom.com)在我们的计划维护期间报告停机时间.
我认为这必须在IIS级别,因为app_offline.htm在请求处理周期中很早就得到了服务.
我正在使用Ember Data,我似乎无法获得模型的'errors'属性来填充来自我的REST API的错误消息.我非常关注本指南中的示例:
http://emberjs.com/api/data/classes/DS.Errors.html
我的应用程序如下所示:
window.App = Ember.Application.create();
App.User = DS.Model.extend({
username: DS.attr('string'),
email: DS.attr('string')
});
App.ApplicationRoute = Ember.Route.extend({
model: function () {
return this.store.createRecord('user', {
username: 'mike',
email: 'invalidEmail'
});
},
actions: {
save: function () {
this.modelFor(this.routeName).save();
}
}
});
Run Code Online (Sandbox Code Playgroud)
我的API返回:
HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
Content-Length: 125
{
"errors": {
"username": ["Username is taken!"],
"email": ["Email is invalid."]
}
}
Run Code Online (Sandbox Code Playgroud)
在模型上调用save()后,我在用户模型上看到的是:
user.get('isError') // true
user.get('errors.messages') // []
Run Code Online (Sandbox Code Playgroud)
即使模型正确地注册了isError属性,我也似乎无法填充错误消息.我怎样才能让它发挥作用?我正在研究Ember Data版本1.0.0-beta.8.2a68c63a的最新beta版本
Windows 10附带IIS 10,ColdFusion 10似乎不喜欢它.ColdFusion 10安装得很好,但是当需要创建连接器时(无论是在安装过程中还是使用工具C:\ColdFusion10\cfusion\runtime\bin\wsconfig.exe),它都会失败.我得到的错误消息是它不支持IIS 10.
需要此连接器才能在IIS中设置CFIDE和jakarta虚拟文件夹.
有什么方法吗?
在我的调试器中检查.Net 4中的System.Net.ServicePointManager.DefaultConnectionLimit时,我看到非常高的数字.我在一台机器上看到24,在另一台机器上看到48.
对于新创建的ASP.NET MVC 3项目,即使没有对其进行任何配置更改,情况也是如此.这是一个错误吗?文档明确指出默认值为2:
ServicePoint对象允许的最大并发连接数.默认值为2.
DefaultNonPersistentConnectionLimit和DefaultPersistentConnectionLimit字段分别是更真实的4和2,但DefaultConnectionLimit数字似乎超出范围.
asp.net ×2
asp.net-mvc ×2
iis ×2
.net ×1
.net-4.0 ×1
.net-core ×1
api ×1
asp.net-core ×1
c# ×1
coldfusion ×1
ember-data ×1
ember.js ×1
facebook ×1
github ×1
iis-7 ×1
javascript ×1
json.net ×1
object-graph ×1
regex ×1
rest ×1
templates ×1
windows-10 ×1