使用C#或其他.NET语言确定文件路径字符串是在本地计算机还是远程服务器上的最佳方法是什么?
可以使用以下内容确定路径字符串是否为UNC:
new Uri(path).IsUnc
Run Code Online (Sandbox Code Playgroud)
这适用于以C:\或其他驱动器号开头的路径,但是路径如下:
\\machinename\sharename\directory
\\10.12.34.56\sharename\directory
Run Code Online (Sandbox Code Playgroud)
...两者都引用本地机器 - 这些是UNC路径但仍然是本地路径.
我现在正在使用64位操作系统(Windows Server 2008 64位)在Visual Studio 2008上进行开发.
虽然我编写的应用程序具有64位功能,但IIS7也是如此,内置的ASP.NET开发服务器(又名Cassini又名WebDev.Webserver.exe)运行为32位.
这带来了许多问题,例如:
虽然我找到了大部分的解决方法,但我不得不问......
是否有人使用64位体系结构上的Visual Studio 2010预览位知道开发Web服务器是否可以处理64位,如果是,是否可以选择运行它的模式?(例如,项目属性中的复选框)
64-bit cassini visual-studio-2010 webdev.webserver 32bit-64bit
有谁知道如何从T-SQL以编程方式确定SQL主动 - 被动故障转移群集的主动节点?
@@SERVERNAME 仅返回虚拟服务器名称,该名称与两个节点相同.
我不打算根据数据做出任何决定 - 我相信故障转移可以做到这一点 - 但我想将信息包含在事件日志中,以便我可以告诉事件发生时集群中的哪个节点处于活动状态,或帮助确定是否由于故障转移而出现异常.
我正在向MVC控制器发布一个对象.该对象包含一个名为StartDt的字段,在客户端上它是本地时间的javascript Date对象.
当我在对象上调用JSON.stringify并使用jQuery的ajax方法将其POST到服务器时,我可以在Firebug中看到发送到服务器的是一个ISO字符串,如"1900-12-31T13:00:00.000Z",我相信应该是UTC格式的本地时间.
当我查看控制器中的DateTime字段时,它看起来像是回到本地时间而不是UTC.我怎样才能解决这个问题?
我想存储来自客户端的日期的UTC版本.
也许我在这里推动信封,但我迫切希望利用NuGet来缓解我发现自己的DLL地狱.
我们有4个主要产品都存在于相互关联的Mercurial存储库中.所有这些都"共享"了3个核心组件,然后其他一切都是针对特定产品的.现在管理变得非常困难,因为一个产品已升级到.NET 4.0并且正在使用需要.NET 4.0的外部依赖项,而另一个产品因为我甚至不想进入的原因而陷入.NET 3.5.
因此,我们失去了合并产品差异的能力.
要修复它,我想取出3个主要程序集,并将它们转换为自己的项目,并使用自己的发布周期,并注意确保它们可以针对.NET 3.5和4.0进行编译,然后将它们转换为NuGet包含多个框架版本.
但是,我也希望开发人员能够浏览这些项目的来源.
所以我设置了一个私有的NuGet服务器和一个私有的SymbolSource服务器.然后我仔细地将所有存储库中的所有更改合并在一起,并丢弃除核心程序集之外的所有内容.然后我精心手工编辑.csproj文件,以便代替AnyCPU平台,每个项目都有3.5和4.0的平台目标,它指定条件常量(控制System.Dynamic等特定于平台的功能)并设置框架版本.
然后我为"3.5 Debug","3.5 Release","4.0 Debug"和"4.0 Release"设置了解决方案配置.每个目标都适用于相应的配置(调试或发布)和平台(3.5或4.0).
我可以在Visual Studio中为任何平台构建一切.现在我遇到NuGet的问题,因为有两种方法可以创建一个包,两者都有一个弱点,除非我遗漏了一些东西:
按项目文件打包
nuget pack MyProject.csproj -Build -Symbols -Version <insert-from-build-server> -Properties "Configuration=Release;Platform=3.5;"
Run Code Online (Sandbox Code Playgroud)
这个问题是:
lib\net40错误.由Nuspec文件打包
使用这种方法,我必须自己完成所有msbuilding,然后进行一堆文件复制来设置文件夹结构
* MyProject.nuspec
* net40
* MyProject.dll
* MyProject.pdb
* net35
* MyProject.dll
* MyProject.pdb
Run Code Online (Sandbox Code Playgroud)
然后我可以运行nuget pack MyProject.nuspec但是没有源代码可以使用符号,因为没有.csproj文件,NuGet无法弄清楚从哪里获取所有源文件,而且我没有看到任何关于如何做的文档这使用目录约定.
所以我的问题是:
任何想法将不胜感激.
精简版
我想要一个ADPlus脚本,它将在第一次机会StackOverflowException上执行完全内存转储,然后清除任何内容,并忽略所有其他异常类型.
日志版本
在发布新的ASP.NET代码之后,我们开始获得间歇性的StackOverflowExceptions.我们已经寻找无限递归和自上次已知良好安装以来添加的修订版中的所有常见嫌疑人,并且找不到任何内容.该网站将运行长达一个小时,然后崩溃.
我们使用了WinDbg和SOS,并尝试使用ADPlus获取崩溃日志,使用以下命令:
adplus -crash -o D:\Crash -NoDumpOnFirst -iis
Run Code Online (Sandbox Code Playgroud)
-NoDumpOnFirst的原因是我们只能在繁忙的服务器上重现生产中的这个错误.为了对每个第一次机会异常执行minidump(嘿,它发生),调试器必须暂停IIS工作进程足够长时间写出一个16兆字节的文件,因此请求排队并且应用程序变得不稳定.因为这个错误可能需要长达一个小时才能让它变得难看,这是有问题的.
所以使用-NoDumpOnFirst,我得到一个转储文件,WinDbg输出这些线程:
PDB symbol for mscorwks.dll not loaded
ThreadCount: 69
UnstartedThread: 0
BackgroundThread: 69
PendingThread: 0
DeadThread: 0
Hosted Runtime: no
PreEmptive GC Alloc Lock
ID OSID ThreadOBJ State GC Context Domain Count APT Exception
XXXX 1 c6c 000fa758 11808221 Disabled 3b49ee4c:3b49efe8 00120888 1 Ukn (Threadpool Worker)
XXXX 2 1294 000fd258 b220 Enabled 00000000:00000000 000df4e0 0 Ukn (Finalizer)
XXXX 3 1eb0 0011cdd0 80a220 Enabled 00000000:00000000 000df4e0 0 Ukn (Threadpool …Run Code Online (Sandbox Code Playgroud) 我知道Stack Exchange站点不使用内置的ASP.NET MVC @Html.AntiForgeryToken()来防止XSRF/CSRF攻击.而不是创建一个名为隐藏输入的__RequestVerificationToken一个很长的基础上,web.config中的部分的machineKey值,堆栈交换方法创建一个名为输入fkey与MUCH更简洁的价值.这显然是一个Guid,根据Google Code上Stack Exchange Data Explorer项目的证据,这个值与每个用户相关联,在您登录或注销之前保持相当稳定.
此外,Stack Exchange值在页面上是常量,并且可供客户端脚本使用,因此用于投票的Ajax帖子以及类似的东西也使用该令牌.相比之下
那么为什么Stack Exchange会向自己的鼓手迈进呢?
我无法在Stack Exchange团队中找到Jeff或其他人的任何博客文章,以解释SE网络上XSRF预防策略背后的指导原则.如果其中一个人可以写一篇文章,那将是非常好的,当然假设它可以在不产生漏洞的情况下以一般术语完成.对于我们这些想要使我们的网站安全的人来说,这将是非常有价值的信息,但是只是盲目地信任微软为我们做这件事并不完全舒服.
有没有人想出一个很好的方法来自动分享一组Visual Studio Code Snippets(Visual Studio使用的实际.snippet文件)?我的团队中的其他开发人员可以从我为自己创建的快捷方式中获益,反之亦然.
我正在尝试为稳定的iPhone应用程序设置持续构建/集成.
我有:
最大的问题是代码签名和钥匙串.
我们代表客户的开发者身份创建代码,因此我们有几个开发人员身份,我们将添加更多.
我想将Mini放在一个黑暗的房间里,从不看它,但是第一次使用开发者身份构建时,会弹出一个GUI对话框,询问您是否要始终允许codesign访问开发者身份.
假设您这样做,该对话框修改了钥匙串访问控制列表(ACL),以便允许使用代码签名.
您可以通过打开Keychain Access,扩展证书,选择私钥,右键单击,选择"获取信息",然后切换到"访问控制"选项卡来查看此信息."处女"密钥只在其"始终允许"应用程序列表中具有Keychain Access.您在对话框中使用和确认的一个也将具有编码.
这个框提供了一种添加应用程序的方法,除了你得到标准的Finder文件选择器,它隐藏了Unix文件夹.没有办法导航到/ usr/bin/codesign.所以手动添加是不可能的!
有没有人知道这方面的方法?
我知道有一种方法使用"安全导入"的-T开关,但是当你首先导入密钥时必须指定ACL,因此在Keychain GUI中添加的任何键都必须被抛出并重新导入.不是很好.
在Visual Studio网站项目中(在Visual Studio 2005或更高版本中,而不是仍存在.csproj文件的Web应用程序项目)如何存储参考信息,是否可以在不将源编译的二进制文件存储在源代码管理中的情况下对其进行控制?
如果右键单击网站项目并选择"属性页",则第一个屏幕(引用)将列出所有项目引用.
System.*引用列为GAC类型,其他DLL文件可以列为BIN或Project.
当您将某些内容包含为项目引用,然后将其提交给源代码控制(对于我们,Subversion,忽略.dll和.pdb文件)时会出现此问题.)
另一个开发人员从存储库中获取更新的代码,并且必须手动设置所有这些项目引用,但我甚至无法确定存储此信息的位置,除非它位于.suo中,这不是源代码控制友好的.