我以为我知道这一点,但今天我被证明是错的 - 再一次.
运行VS2008,.NET 3.5和C#.我使用默认值将"用户"设置添加到"属性设置"选项卡,然后使用以下代码读取它们:
myTextBox.Text = Properties.Settings.Default.MyStringProperty;
Run Code Online (Sandbox Code Playgroud)
然后,在用户编辑选项对话框中的值后,我将其保存为:
Properties.Settings.Default.MyStringProperty = myTextBox.Text;
Properties.Settings.Default.Save();
Run Code Online (Sandbox Code Playgroud)
我的问题是,这个新值保存在哪里?可执行文件目录中的MyApp.exe.config文件未更新,它仍包含默认值.另外,据我所知,该目录中的其他任何文件都没有更新!但是,当程序重新读入值时,它会获得更改的值,因此我知道它已保存在某处...
这不仅仅是学术性的,我需要能够手动编辑今天早上的价值,当我找不到任何改变的东西时,我会感到难过.
显然我在之前的帖子中提出了错误的问题.我有一个使用X.509证书保护的Web服务,作为安全的网站运行(https:// ..).我想使用公司的根CA颁发的客户端机器证书(也是X.509)来验证客户端机器是否有权使用该服务.为了做到这一点,我需要检查证书并寻找一些识别功能,并将其与存储在数据库中的值(可能是指纹?)相匹配.
这是我用来从本地证书商店获取证书的代码(直接从http://msdn.microsoft.com/en-us/magazine/cc163454.aspx获取):
public static class SecurityCertificate
{
private static X509Certificate2 _certificate = null;
public static X509Certificate2 Certificate
{
get { return _certificate; }
}
public static bool LoadCertificate()
{
// get thumbprint from app.config
string thumbPrint = Properties.Settings.Default.Thumbprint;
if ( string.IsNullOrEmpty( thumbPrint ) )
{
// if no thumbprint on file, user must select certificate to use
_certificate = PickCertificate( StoreLocation.LocalMachine, StoreName.My );
if ( null != _certificate )
{
// show certificate details dialog …Run Code Online (Sandbox Code Playgroud) 我正在向NerdDinner DinnersController类添加测试,当我创建构造函数需要进行构造函数注入时,我得到了与T4MVC生成的构造函数(特别是基础构造函数)的冲突.看起来如果已经存在基础构造函数,则不会生成基础构造函数 - 这是真的吗?如果是这样,我需要做什么才能重新生成T4MVC文件?
谢谢,戴夫
我想将一组修改过的记录与从数据库中提取的记录列表进行比较,并从数据库中删除那些在传入数组中不存在的记录.修改后的数组来自维护数据库的客户端应用程序,此代码在WCF服务应用程序中运行,因此如果客户端从数组中删除记录,则应从数据库中删除该记录.以下是示例代码段:
public void UpdateRecords(Record[] recs)
{
// look for deleted records
foreach (Record rec in UnitOfWork.Records.ToList())
{
var copy = rec;
if (!recs.Contains(rec)) // use this one?
if (0 == recs.Count(p => p.Id == copy.Id)) // or this one?
{
// if not in the new collection, remove from database
Record deleted = UnitOfWork.Records.Single(p => p.Id == copy.Id);
UnitOfWork.Remove(deleted);
}
}
// rest of method code deleted
}
Run Code Online (Sandbox Code Playgroud)
我的问题:使用Count方法比Contains方法有速度优势(或其他优势)吗?Id属性保证是唯一的并且用于标识该特定记录,因此您不需要进行按位比较,因为我假设Contains可能会这样做.
任何人?谢谢,戴夫
在远程计算机上运行SQL Server 2012 Express,尝试启动并运行Flyway.我有一个pcesqldev.pce.local被调用的数据库Hawk(dbo.Hawk,如果这很重要)我要连接到,并且配置文件中的模板如下所示:
SQL Server : jdbc:jtds:sqlserver://<host>:<port>/<database>
Run Code Online (Sandbox Code Playgroud)
请注意,这与我与其他产品一起使用的其他jdbc连接字符串不同 - 其中大部分都不包含jtds部分,并且包含实例名称.
这是我尝试过的一些连接字符串,所有连接字符串都失败了:
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local:1433/Hawk
Run Code Online (Sandbox Code Playgroud)
网络错误IOException:连接被拒绝:连接
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local\SQLEXPRESS:1433/Hawk
Run Code Online (Sandbox Code Playgroud)
未知的服务器主机名'pcesqldev.pce.local\SQLEXPRESS'
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local/SQLEXPRESS:1433/Hawk
Run Code Online (Sandbox Code Playgroud)
网络错误IOException:连接被拒绝:连接
flyway.url=jdbc:jtds:sqlserver://pcesqldev.pce.local:1433/SQLEXPRESS\Hawk
Run Code Online (Sandbox Code Playgroud)
网络错误IOException:连接被拒绝:连接
我错过了什么?必须有一些明显的东西,但我看不到它.
在任何人问之前,是的,我们确实启用了对数据库的TCP访问,并且它正在使用端口1433.
好像我正在与一个顽抗的VS2008 DataSet设计师作战.我一直在尝试做一个简单的2表数据集解决方案,其中一个表只是存储在另一个表中的整数值的文本含义.基本数据设计101.
Table1
CharField1
CharField2
IntForeignKeyField1
etc
Table2
IntPrimaryKey1
ValueForKeyField
Run Code Online (Sandbox Code Playgroud)
这并没有真正影响我遇到的问题,我不相信,因为我不想做任何事情,只是从第二个表中读取值,所以我可以在客户端的DataGridViewComboBoxColumn中选择它们 - 我会永远不要在客户端上编辑它们.但是,我离题了.
由于它存在于Web服务中,并且我希望将一个强类型数据集传递给此Web服务的客户端,因此我决定使用DataSet Designer来构建TableAdapter和所有管道,认为它可能不那么有用,也更容易保持.
因此,我创建了漂亮的框并编辑了select语句,指示设计者为表适配器创建所有Insert,Update和Delete命令.它很高兴地告诉我,一切都按照我的要求完成了.
但是,当我尝试使用Update语句时,我收到一条错误消息,指出没有有效的Update语句!在对网络上有类似问题的人进行一些徒劳无功的搜索之后,我挖掘了数据集的XML.果然,没有Update语句,也没有Delete语句.
我尝试从项目中完全删除并重新创建DataSet,结果相同.未创建更新或删除语句,即使报告已完成.
我最后通过检查来自另一个项目的另一个设计数据集手动构建Update语句XML,因此Web服务现在正在运行.但是,我没有任何信心,我的更改将持续通过设计师发起的编辑,我很难过为什么它不起作用.有任何想法吗?
感谢任何反馈,戴夫
作为一名C程序员,我可以输入:
memset( byte_array, '0xFF' );
Run Code Online (Sandbox Code Playgroud)
并获得一个填充'FF'字符的字节数组.所以,我一直在寻找替代品:
for (int i=0; i < byteArray.Length; i++)
{
byteArray[i] = 0xFF;
}
Run Code Online (Sandbox Code Playgroud)
最近,我一直在使用一些新的C#功能,并且一直在使用这种方法:
Array.ForEach<byte>(byteArray, b => b = 0xFF);
Run Code Online (Sandbox Code Playgroud)
当然,第二种方法似乎更清晰,更容易看到,但性能与使用第一种方法相比如何呢?我是否通过使用Linq和泛型来引入不必要的开销?
谢谢,戴夫
使用VS2008,C#和.NET 3.5
我正在使用数据绑定DataGridView控件来显示从Web服务读取的表格数据.在某些情况下,需要对数字列进行排序.我已尝试了几种不同的方法来实现此功能,但该列仍然按字母顺序排序(即1,10,2,3而不是1,2,3,10).
将列数据类型设置为int对数据绑定控件不起作用,因此唯一真正的方法是提供一些自定义排序逻辑.
许多人建议连接到SortCompare事件以提供自定义排序逻辑,但由于某种原因,事件代码永远不会运行 - 我可以在处理程序中放置一个断点,它永远不会到达那里.我通过GUI添加事件处理程序,因此处理程序由VS添加到控件,而不是手动添加.
这是事件处理程序代码,从这里的某处提升:
private void uxLicensedSoftwareDataGridView_SortCompare( object sender,
DataGridViewSortCompareEventArgs e )
{
int intValue1, intValue2;
if ( !Int32.TryParse( e.CellValue1.ToString(), out intValue1 ) )
return;
if ( !Int32.TryParse( e.CellValue2.ToString(), out intValue2 ) )
return;
if ( intValue1 == intValue2 )
e.SortResult = 0;
else if ( intValue1 < intValue2 )
e.SortResult = -1;
else
e.SortResult = 1;
e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)
如果这被解雇了,它将完全按照我的意愿行事.我能错过什么?
谢谢你指出(希望)显而易见......戴夫
好的,所以我做了蠢事并发布了针对我们的开发数据库(SQL Server 2008 R2)的生产代码(C#,VS2010).幸运的是我们还没有使用生产数据库,所以我没有尝试恢复和同步一切的痛苦......
但是,我想要防止这种情况再次发生,因为它可能会更加痛苦.我的想法是添加一个我可以在启动时查询的表,并通过返回的值确定我连接的数据库.例如,生产将返回"PROD",dev和test将返回其他值.
如果它有任何区别,应用程序会与WCF服务进行通信以访问数据库,因此我在配置文件中有端点,而不是实际的连接字符串.
这有意义吗?其他人如何解决这个问题?
谢谢,戴夫
我正在使用WCF服务器(使用新的测试版Mindscape LightSpeed ORM)并在ASP.NET MVC2客户端上使用该服务.我的实体在客户端显示为数组T或IEnumerable<T>.我希望在数据到达后对数据做很酷的事情,但需要LINQ语法IQueryable<T>.
我知道有一种方法可以转换IEnumerable<T>为IQueryable<T>,但到目前为止我没有运气寻找它.有人可以帮忙吗?
谢谢,戴夫
可能重复:
在单个端口上承载多个TCP WCF服务端点
我有一个从一个WCF服务应用程序运行的4个服务,如果使用4个独立的端口并且在我的本地计算机上运行,它在控制台应用程序中托管,它们都很好用.这对于开发来说很好,但是现在我想把它移到Intranet上的Server 2008机器上,而且IT男孩们并不乐意在这台机器上打开大量的端口.
我知道我可以在同一个端口上运行多个服务,但我似乎找不到任何告诉我如何操作的东西.大多数情况下,第一个服务启动,然后第二个服务无法启动.
有人能指出我的博客或文章,解释如何做到这一点?
我还需要弄清楚如何在WAS中托管服务,但这可能是一个单独的问题.我正在使用TCP协议,如果这有任何区别......
谢谢,戴夫
我一直在努力让Windows身份验证与开发中的MVC3应用程序(VS 2010 SP1)一起使用,到目前为止还没有真正的运气.我在我的开发机器上运行XP(直到明年没有钱进行升级),如果这有所不同.我还应该提到我使用IIS Express作为VS 2010的默认Web开发服务器.
我开始使用一个空的MVC3应用程序,因为我没有从VS菜单中获得Intranet模板,直到我昨天升级了MVC3工具(好吧,我有点慢).一旦我安装并检查了该模板,我就将DirectoryServices的引用添加到了我的项目中,并在页面的右上角添加了显示当前登录用户的代码.根据图形,它现在应该说"欢迎PCE\dnewman!"
我遵循了这篇文章中的优秀说明:IIS Express Windows身份验证并确实取得了一些进展.但是,我现在从IIS Express收到401.2错误,告诉我我没有被授权......
所以,我进入了我的项目属性并将Anonymous Authentication设置为Enabled.现在我可以访问该网页,但我在页面右上角看到的是"欢迎!" - 没有用户名.
我尝试使用IE和Firefox,结果相同.什么$#^&!我在这儿失踪了?好像我没有登录到Windows !! 我在哪里开始寻找问题?
在几年前的前雇主,我写了一个Windows窗体应用程序,用他们的Windows登录凭据对用户进行身份验证.在这种情况下,我必须特别注意发送凭据,然后在服务端显式验证它们.我是否需要做些什么来使浏览器包含每个GET或POST的凭据?
根据请求,这是我的web.config的内容,对所有Glimpse配置的东西道歉.
<?xml version="1.0"
encoding="utf-8"?>
<configuration>
<configSections>
<section name="glimpse"
type="Glimpse.Core.Configuration.GlimpseConfiguration" />
</configSections>
<appSettings>
<add key="ClientValidationEnabled"
value="true" />
<add key="UnobtrusiveJavaScriptEnabled"
value="true" />
</appSettings>
<system.web>
<compilation debug="true"
targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
<pages>
<namespaces> …Run Code Online (Sandbox Code Playgroud) 我的日期时间值以UTC格式存储在数据库中.我想使用标准的MVC3 WebGrid控件在本地时区显示它们,但不知道如何做到这一点或在哪里寻找答案.
我当前的代码如下所示:
grid.Column("TestDateTime", "Test Date/Time")
Run Code Online (Sandbox Code Playgroud)
我知道那不起作用!
有人能引导我朝着正确的方向前进吗?我确实可以访问Telerik控件(从本地用户组免费),但没有尝试过,因为似乎更多的附加组件更麻烦(许可证费用,更新,保持几个开发环境同步等).如果这是唯一的方法,我会这样做,但宁愿让微软的标准工具来完成这项工作.
谢谢,戴夫
c# ×8
.net ×3
linq ×2
wcf ×2
.net-3.5 ×1
.net-4.0 ×1
asp.net ×1
database ×1
dataset ×1
designer ×1
events ×1
flyway ×1
lightspeed ×1
performance ×1
settings ×1
slowcheetah ×1
sql-server ×1
t4mvc ×1
tableadapter ×1
unit-testing ×1
version ×1
web-services ×1
winforms ×1