小编JDB*_*JDB的帖子

确定OData服务器的版本

给定已知的OData端点,确定OData服务版本的最佳方法是什么?此方案中的客户端可以支持任何版本(1-4),但我需要知道如何格式化请求.

例如,OData-VersionV4服务返回"4.0",但V3服务甚至没有该标头.

此外,对于具有大量实体的服务,查询服务根URL可能非常昂贵.对于例如,没有自定义一个基本动力2016在线服务对象数据的回报2.7KB,当我真正想要的是版本头.

那么获得可靠版本号的最轻量级解决方案是什么?如果解决方案是"检查这个,或者如果丢失,那么检查"是没关系的.什么是"这个"和"那个"?


我发现了一个问题(如何从元数据中找到OData版本),这似乎让我部分地在那里,但答案中存在一些问题.

首先,它专注于查找最小/最大版本号,我真的更喜欢最大值.

其次,它需要查询元数据,但这可能是一个巨大的负载./$metadata在Dynamics CRM 2016 Online上产生3.7MB响应(在我当前的连接上下载需要30秒).我想要请求一个虚拟实体,/dummy__entity然后检查标题,但这对我来说似乎有点不对,因为它会不必要地触发服务器上的错误记录,我不确定错误响应总是可能有标题我在找.

version odata

11
推荐指数
1
解决办法
1024
查看次数

如何重新合并已合并的分支?

我有一个提交图,看起来像下面的那个.标记*为的提交代表许多提交.

   A*
   |
   B---------
   |        |
   C*       D*    <- old feature branch
   |        |
   E---------
   |
   F*
   |
   G      <- master
Run Code Online (Sandbox Code Playgroud)

合并提交E未正确完成,并且C*中的某些更改(不是全部)已丢失.如何重做该合并以将更改重新引入当前主服务器?

一切都已被推动(开源项目),所以改变历史不是一种选择.

我尝试从提交C*创建一个补丁并将其应用到主服务器,但由于C*的一些更改已正确合并,并且因为项目自该提交后进化,大约80%的补丁失败.

理想情况下,我们会采用C*中的所有更改,将它们应用于掌握并解决所有冲突.但由于分支已经合并,git不会检测到任何更改,也不允许再次合并.

$ git checkout 5bc5295   # C
HEAD is now at 5bc5295... cleanup

$ git checkout -b "missing-commits"
Switched to a new branch 'missing-commits'

$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.

$ git merge missing-commits
Already up-to-date.
Run Code Online (Sandbox Code Playgroud)

git merge

9
推荐指数
2
解决办法
9897
查看次数

取消数据绑定控件验证事件不会抑制尝试更新数据源

我没有得到我希望绑定到业务对象中的整数属性的TextBox的行为.

这是我做的:

(1)将DataSourceUpdateModeTextBox设置为:OnValidation.

(2)如果Validating是TextBox,请设置e.Cancel = TrueInteger.TryParse是否失败.

(3)在处理程序中添加处理程序Binding.ParseBinding.BindingComplete在处理程序中放置断点.

运行应用程序,将"asdasd"放在TextBox和tab中.尽管设定e.Cancel = True,但事件ParseBindingComplete事件都被提出.根据文档,设置e.Cancel = True应该抑制任何进一步的逻辑.

我搜索了MSDN,找出为什么会发生这种情况,但我找不到任何东西.有没有人知道我在哪里可以得到一些细节?

ETA:我还为Validated事件添加了一个句柄.这是事件的顺序:

数据不好:

(1)验证.(我设定e.Cancel = True)

(2)解析

(3)BindingComplete

好数据:

(1)验证

(2)解析

(3)BindingComplete

(4)经过验证

ETA2:更多信息和解决方法.

此行为的问题是,如果您有一些未在属性设置器中实现的验证.

例如,假设我的整数属性必须是奇数.我没有在属性设置器中检查这个,所以我在验证事件中进行检查.

如您所见,根据上述行为,即使我取消验证,作为合法整数的值也将写入数据源.

尽管数据源已更新,但如果在验证事件中设置了"取消",则不会触发Validated事件,因此您仍然可以阻止用户继续进行.

变通::

要停止数据源更新,您需要在Binding.Parse事件中进行验证,并抛出异常 - 这会阻止Binding成功完成.

.net vb.net data-binding validation winforms

8
推荐指数
1
解决办法
2050
查看次数

使用简单的搜索/替换正则表达式在点和字符之间插入空格

我希望通过在每个句点和字母之间插入一个空格来分隔句子,而不是在点和括号或点和逗号之间插入空格.

考虑一下:

This is a text.With some dots.Between words.(how lovely).
Run Code Online (Sandbox Code Playgroud)

这可能在Perl或PHP中有一些解决方案,但我感兴趣的是它可以在支持基于正则表达式的搜索/替换的文本编辑器中完成吗?问题是它会匹配点和字符,替换将完全消除两者.换句话说,有没有办法在这两个字符之间匹配"无"?

regex replace

8
推荐指数
1
解决办法
2万
查看次数

具有预配置授权的OAuth安全性

我有一个用户已登录到Web应用程序(使用OpenID Connect进行身份验证)然后需要从单独的REST服务访问数据的方案.

REST服务需要确定用户是否具有访问所请求数据的权限,但如果用户确实具有权限,则它应该授予Web应用程序授权,而无需用户与UI交互.

基本上,我需要的是一个两足的OAuth解决方案,其中客户端/信赖方完全受信任,但已经过身份验证的用户不是.

进入后,我认为OAuth可以满足这些要求,但是没有一种授权类型似乎符合要求:

  • 授权代码与我需要的相反,因为用户几乎是自动信任但客户端不是,要求用户通过Web表单授予对客户端的访问权限.
  • 客户端凭据信任客户端(这是我需要的),但不会为服务提供确定用户是否具有资源权限的机会(用户身份验证令牌不会传递给服务,使所有请求基本上都是"匿名的").
  • ROPC(资源所有者密码凭据)似乎是唯一的选项,但要求Web应用程序知道并可能存储用户的登录凭据(这是站不住脚的).

这是OAuth的差距吗?或者我误解了这些拨款类型?如果OAuth不能支持这种情况,是否还有其他广泛采用的开放标准,我错过了?

值得注意的是:我只拥有/控制Web应用程序,而客户(所有客户都是企业)拥有/控制身份验证服务器和REST服务.因此,需要一个共享的非专有标准,以便我们的客户知道如何配置他们的服务(IBM,Microsoft,等等),以便我知道如何传递任何身份验证令牌等.

authentication rest authorization oauth-2.0

8
推荐指数
1
解决办法
247
查看次数

使用D3从休息服务获取数据

我在http:// localhost/RestService/GetTransactionByStatus/1上有一个可用的Web服务.当我在浏览器上运行该URL时,我得到了正确的JSON格式的响应:

{
    "transactionConcil"      : "TRANSACTIONS OK",
    "numTransactionConcil"   : 0,
    "transactionNoConcil"    : "TRANSACTIONS NOT OK",
    "numTransactionNoConcil" : 0
}
Run Code Online (Sandbox Code Playgroud)

如何管理此REST服务以使用Web服务在浏览器中显示正确的数据?数据将被动态管理,因此要显示的信息取决于ID(URL中的最后一个参数).

javascript rest json d3.js

8
推荐指数
2
解决办法
1万
查看次数

将对象转换为字符串的最佳实践

我已经看到了许多在.NET 中转换Object为a 的方法String,通常用于在对象类型未知时向用户显示对象的值.

这些包括:

Dim x as Object = 3
Dim y as Object = Nothing
Dim z as Object = DBNull.Value
Dim l_displayString As String

l_displayString = "" & x & "" & y & "" & z
l_displayString = If(x, "").ToString() & If(y, "").ToString() & If(z, "").ToString()
l_displayString = Convert.ToString(x) & Convert.ToString(y) & Convert.ToString(z)
Run Code Online (Sandbox Code Playgroud)

是否有Microsoft推荐的方法,或者这些方法都编译为相同的字节代码?

编辑:

让我稍微扩展一下这个问题:

这些方法有什么区别?我看不清底下发生了什么,所以很高兴知道一个人是否有任何性能优势.在某些情况下,这些调用可能会进行数千次(例如从大型表中读取),并且在几秒钟内完成调整可能会对UX造成很大影响.

.net vb.net

7
推荐指数
1
解决办法
2万
查看次数

控制台应用程序中的消息泵

我有一个用.NET编写的相当简单的控制台应用程序.有时应用程序在没有操作员的情况下以批处理模式运行,有时它是"自掏腰包"运行的.如果它以批处理模式运行,则会有一个定义的默认选项,允许程序自动运行.如果存在操作员,则还有其他选项允许用户从功能列表中进行选择.

由于我不想进入的原因,命令行参数不是首选.相反,我创建了一个10秒的窗口,操作员可以在其中选择一个功能.目前,我正在使用一个简单的while循环并从"in"流中读取输入.我在最后添加了一个Thread.Sleep调用,以防止while循环完全消耗处理器,但我想知道是否有更好的方法.

在Windows应用程序(Windows窗体WPF)中,有一个消息泵,它能够读取消息队列,然后将控制权返回给系统.即使像Visual Studio,SAS Enterprise GuideSQL Server Management Studio这样的重型应用程序在空闲时也几乎使用了0%的处理器.我的控制台应用程序可以获得相同的效果吗?

Thread.Sleep正在工作,但正如我所说,我想知道是否有更好的方法.

这是源代码:

class Program {
    static void Main( string[] args ) {

        DateTime l_startTime = DateTime.Now;

        Console.CursorVisible = false;
        Console.WriteLine( "Please select an option within 10 seconds..." );
        Console.WriteLine( "" );
        Console.WriteLine( " [1] Option A (DEFAULT)" );
        Console.WriteLine( " [2] Option 2" );
        Console.WriteLine( " [3] Option III" );

        int l_elapsedSeconds = 0;

        bool l_exit = false;
        while ( !l_exit …
Run Code Online (Sandbox Code Playgroud)

.net c# console-application message-pump

7
推荐指数
1
解决办法
6652
查看次数

VSCode集成终端创建一个单独的窗口

刚刚安装了VSCode和git bash.

我已将以下行添加到settings.json文件中:

{
    "terminal.integrated.shell.windows": "D:\\Program Files\\Git\\git-bash.exe" 
}
Run Code Online (Sandbox Code Playgroud)

当我按下Ctr +`打开集成的shell窗口时,它打开一个新窗口,而不是在底部的主编辑器中打开:

Git Bash Winow

为什么不在通常的地方出现?

bash visual-studio-code

7
推荐指数
2
解决办法
3908
查看次数

对象与目标类型不匹配

我有一个控制TableLayoutPanel网格PictureBox.我正在尝试找到一种快捷方式将它们全部更改为Label控件,而不是手动删除每个控件并在每个单元格中放置新控件.

我以为我可以进入设计器代码并使用Label查找/替换PictureBox,但现在我得到了一个

"对象与目标类型不匹配"

Visual Studio的错误列表中的错误.我现在也无法查看设计器页面.这是不允许的?如果允许,那么正确的方法是什么?

.net c# label picturebox winforms

6
推荐指数
1
解决办法
5174
查看次数