如果我的假设在这里错了,请随意纠正我,但让我解释一下我为什么要问.
摘自MSDN,a SecureString
:
代表应保密的文本.文本在使用时加密以保护隐私,并在不再需要时从计算机内存中删除.
我明白了,将密码或其他私人信息存储在a中是完全合理SecureString
的System.String
,因为你可以控制它实际存储在内存中的方式和时间,因为System.String
:
是不可变的,当不再需要时,不能以编程方式安排垃圾收集; 也就是说,实例在创建后是只读的,并且无法预测实例何时从计算机内存中删除.因此,如果String对象包含敏感信息(如密码,信用卡号或个人数据),则使用该信息后可能会显示该信息,因为您的应用程序无法从计算机内存中删除该数据.
但是,在GUI应用程序(例如,ssh客户端)的SecureString
情况下,必须从a构建 System.String
.所有文本控件都使用字符串作为其基础数据类型.
因此,这意味着每次用户按下某个键时,就会丢弃那里的旧字符串,并构建一个新字符串来表示文本框内的值,即使使用密码掩码.并且我们无法控制何时或是否从内存中丢弃任何这些值.
现在是时候登录服务器了.你猜怎么着?您需要在连接上传递一个字符串以进行身份验证.所以让我们将我们SecureString
转换为System.String
....现在我们在堆上有一个字符串,无法强制它通过垃圾收集(或将0写入其缓冲区).
我的观点是:无论你做什么,沿线某处,那SecureString
是会被转换成一个System.String
,这意味着它至少会在某些点上堆存在(没有垃圾收集的任何保证).
我的观点不是:是否存在绕过将字符串发送到ssh连接或绕过控件存储字符串(制作自定义控件)的方法.对于这个问题,您可以将"ssh connection"替换为"登录表单","注册表单","付款表单","食物 - 你愿意喂你的小狗但不是你孩子的表格",等等
SecureString
实际变得实用?System.String
对象的使用?SecureString
减少System.String
堆上的时间(降低转移到物理交换文件的风险)?SecureString
阻止他进入数据呢?对不起,如果我把问题放得太厚,好奇心就好了.随意回答我的任何或所有问题(或告诉我,我的假设是完全错误的).:)
我刚刚执行了干净安装的Visual Studio 2015 SP3,我在启动时在输出窗口中得到了这个:
我们无法自动填充您的Visual Studio Team Services帐户.
遇到以下错误:TF400813:资源不可用于匿名访问.需要客户端验证.
我根本没有使用VSTS,也没有配置任何连接.(但是,我确实将连接配置为本地TFS实例.)
我怎么能免除这个错误信息?我想指示Visual Studio在启动时永远不要尝试连接到VSTS.
我只是想知道:我正在寻找一种方法来验证给定路径是否有效. (注意:我不想检查文件是否存在!我只想证明路径的有效性 - 所以如果文件可能存在于该位置).
问题是,我在.Net API中找不到任何东西.由于Windows支持的许多格式和位置,我宁愿使用MS-native.
由于该功能应该能够检查:
- 相对路径(./)
- 绝对路径(c:\ tmp)
- UNC-Pathes(\ some-pc\c $)
- NTFS限制,如完整路径1024个字符 - 如果我没有错误超过路径将使许多内部Windows功能无法访问文件.用Explorer重命名它仍然有效
- 卷GUID路径:"\?\ Volume {GUID}\somefile.foo
有没有人有这样的功能?
我喜欢我的UI直观; 每个屏幕应该自然而不引人注目地引导用户进入应用程序的下一步.除此之外,我努力使事情变得混乱和混乱.
开玩笑 :-)
我有三个TableRow
s,每个包含一个只读和不可聚焦的EditText控件,然后是一个右边的按钮.每个按钮启动相同的活动但具有不同的参数.用户在那里进行选择,子活动结束,EditText
用用户的选择填充适当的.
这是经典的级联值机制; 每个选择都会缩小下一个选择的可用选项等.因此,我将禁用每个下一行的两个控件,直到当前行上的EditText包含值.
我需要按照优先顺序做两件事之一:
子活动返回后,问题就出现了; 单击的按钮保持焦点.
回复:上面的#1 - 似乎没有removeFocus()
方法或类似的东西
回复:上面的#2 - 我可以requestFocus()
用来将焦点设置到下一行的按钮,并且在子活动返回后工作,但由于某种原因,它在父活动中不起作用onCreate()
.
我需要在任一方向上保持UI一致性 - 子活动完成后没有按钮具有焦点,或者每个按钮根据其在逻辑流程中的位置获得焦点,包括在任何选择之前的第一个(也是唯一的)活动按钮.
在一个新的Win8.1重新安装上,我的所有代码都从备份恢复,当我构建我的解决方案的主项目时,我突然收到一个Visual Studio警告:
发现无法解析的同一依赖程序集的不同版本之间的冲突.当日志详细程度设置为详细时,这些引用冲突将在构建日志中列出.
我将输出日志级别设置为Detailed,我发现了一些这样的条目:
"mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089"和"mscorlib,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e,Retargetable = Yes"之间存在冲突.之所以选择"mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089"是因为它的版本更高.
麻烦的是,我没有mscorlib
在解决方案的任何地方引用旧的或新的.我的机器上有几个需要.NET 3.5的应用程序,但我看不出它是如何相关的.
一个区别是:没有发生此警告的旧Win8.1安装是一台独立的机器; 这次我加入了域名.我不知道这是否有所作为(我看不清楚),但我认为至少应该提一下.
我见过的大多数git工作流建议branch
在合并到master之后删除它.例如,这个gitflow建议如下:
# Incorporating a finished feature on develop
$ git checkout develop
Switched to branch 'develop'
$ git merge --no-ff myfeature
Updating ea1b82a..05e9557
(Summary of changes)
$ git branch -d myfeature
Deleted branch myfeature (was 05e9557).
$ git push origin develop
Run Code Online (Sandbox Code Playgroud)
我为什么要删除分支?我也好奇当以后发现一个由该功能引入的错误时该怎么做 - 我是否应该再创建一个具有相同名称的分支,修复那里的bug,合并到master并再次删除分支?
我正在尝试使用Code First方法创建数据库.当我运行以下代码时,我收到以下异常.我定义的字段有什么问题吗?我们怎样才能克服这一点?
例外:
更新条目时发生错误.有关详细信息,请参阅内部异常
内在例外:
"无效的对象名称'dbo.Dinners'.
注意:我在数据库中没有这样的表(Dinners).该代码应该创建表.我只是给了连接字符串来识别EF Code First中提到的服务器:无法连接到SQL Server.我应该更改连接字符串吗?
连接字符串:
string connectionstring ="Data Source = .; Initial Catalog = LibraryReservationSystem; Integrated Security = True; Connect Timeout = 30";
LibraryReservationSystem数据库已经是现有数据库.它没有桌子.我期待EF创建表格.
我从一个正在运行的LINQ 2 SQL应用程序复制的连接字符串.我是否需要对其进行任何更改才能提供给EF?
UPDATE
当我包含以下代码时,异常发生了变化.现在它说 - "无效的对象名称'dbo.Dinner'.".现在正在抱怨餐桌; 不是晚餐表.
protected override void OnModelCreating(DbModelBuilder modelbuilder)
{
modelbuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
Run Code Online (Sandbox Code Playgroud)
原始代码
static void Main(string[] args)
{
string connectionstring = "Data Source=.;Initial Catalog=LibraryReservationSystem;Integrated Security=True;Connect Timeout=30";
using (var db = new NerdDinners(connectionstring))
{
var product = new Dinner { …
Run Code Online (Sandbox Code Playgroud) 除非我完全失踪了,我的印象中NLOG文档使用${basedir}
在它的例子,没有解释什么是它的位置应该是.
在哪里可以找到列出所有可能选项的信息?
我定义了这个配置:
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="true">
<targets>
<target name="file" xsi:type="File"
layout="${longdate} ${logger} ${message}"
fileName="${basedir}/logs/${shortdate}.txt"
keepFileOpen="false"
encoding="iso-8859-2" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="file" />
</rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)
它的工作范围我可以告诉,但我还没有得到任何记录在哪里的线索.
我是VB.net的新手(自学成才),只是想知道是否有人可以帮我解决一些代码问题.我不是想做任何太多涉及的事情,只是TextBox
接受一个从1到10的数值.我不希望它接受一个字符串或任何高于10的数字.如果有人输入一个单词或字符的错误信息将出现,告诉他输入有效的号码.这就是我的意思; 显然它不是很好,因为我有问题.再次感谢任何可以提供帮助的人.
If TxtBox.Text > 10 Then
MessageBox.Show("Please Enter a Number from 1 to 10")
TxtBox.Focus()
ElseIf TxtBox.Text < 10 Then
MessageBox.Show("Thank You, your rating was " & TxtBox.Text)
Total = Total + 1
ElseIf IsNumeric(TxtBox.Text) Then
MessageBox.Show("Thank you, your rating was " & ValueTxtBox.Text)
End If
ValueTxtBox.Clear()
ValueTxtBox.Focus()
Run Code Online (Sandbox Code Playgroud) 我是VB.NET中Web服务的新手.我正在制作一个与JIRA(http://www.atlassian.com/software/jira/)交谈的桌面应用程序.他们提供了我决定使用的REST api.第一步是登录他们说...
"要登录JIRA,您需要以JSON格式POST一个用户名和密码......"
{"username":"admin","password":"admin"}
这个网址......
https:// addressgoeshere(我们使用的是https)
有人可以给我一个示例代码来做这个,所以我可以有一个指南和一个良好的开端?请非常感谢!