我是一名ASP.NET/C#开发人员.我一直使用VS2010.我想在我的笔记本电脑上启用BitLocker来保护内容,但我担心性能下降.使用像Visual Studio这样的IDE的开发人员正在同时处理大量的文件.我想,比通常的办公室工作人员更多.
所以我很好奇是否有其他开发人员使用BitLocker进行开发.表现如何?它引人注目吗?如果是这样,那不好吗?
我的笔记本电脑是2.53GHz Core 2 Duo,配备4GB RAM和Intel X25-M G2 SSD.它非常活泼,但我希望它保持这种状态.如果我听到一些关于BitLocker的坏故事,我会继续做我现在正在做的事情,这就是当我没有积极地工作时保留RAR的密码,然后在我完成时将其设置为SDelele(但它是这样的痛苦).
2015年更新:我旅行时一直在Surface Pro 3上使用Visual Studio 2015,默认启用了BitLocker.感觉就像我的台式机一样,i7-2600k @ 4.6 GHz.我认为在具有良好SSD的现代硬件上,你不会注意到!
我想检查一些关于会话状态,用户代理等的事情,并且可能采取行动并在控制器方法有机会执行之前返回特殊视图.例如:
最常见的:
用户请求Home/Index
System检查以确保x!= 0.
x不等于零,因此Home/Index控制器执行正常.
但是,有时候:
用户请求Home/Index
System检查以确保x!= 0.
x DOES等于零.必须通知用户,并且不能允许执行所请求的控制器操作.
我认为这涉及ActionFilters的使用.但我已经阅读过它们,我不明白我是否可以抢占控制器方法并在执行之前返回一个视图.我确信我可以在控制器方法运行之前执行代码,但是如何防止它在某些情况下运行并返回自定义视图,或者直接转到不同的控制器方法?
更新:我实施了RM的解决方案.这就是我做的:
public class MyAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (myValue == wrongValue)
{
filterContext.Result = new ViewResult{ViewName = "Notice"};
}
base.OnActionExecuting(filterContext);
}
}
Run Code Online (Sandbox Code Playgroud)
现在,当myValue出错时,这些用户将获得Notice视图,并且永远不会执行所请求的控制器.为了完成这项工作,我将它应用于我所有控制器继承的ControllerBase.
我将在Visual Studio 2008中编写代码,最终我犯了一个错误.我按CTRL- Z撤消和没有发生.我不是在谈论任何复杂的事情,比如撤消搜索并替换多个未打开的文件.我正在谈论撤消剪切和粘贴操作,或只是键入文本.
这令人沮丧,你知道任何解决方法吗?
我经常保存,所以通常我可以关闭文件,重新打开它,撤消功能再次起作用.然后,最终(也许在20秒内,也许在一个小时内,也许根本没有),再次撤消休息.这真的很烦人,因为当我必须关闭并重新打开文件时,我会丢失我的位置,思路,窗口大小和位置以及分割窗格位置.
可能有用的细节:
我还没有采取痛苦和恼人的故障排除步骤,恢复到精简的Visual Studio 2008安装(默认选项,没有插件),并慢慢建立备份,直到我开始遇到问题.
在此之前我想看看是否有其他人经历过这个并修复它.
因此,有CTRL- Z没有停下为你工作?你修好了吗?
我做了一些愚蠢的事情,因为这实际上是一个功能吗?比如,也许是我不小心碰到的一些热键或我正在采取的一些动作禁用撤消?
我右键单击SQL Server 2008 Management Studio的对象资源管理器中的数据库.我转到任务>导入数据,并从平面文本文件导入一些数据,选择将包保存在服务器上.
现在我怎样才能进行编辑或再次运行它?我在SQL Server Management Studio中的哪个位置?我已经扩展了一切,我找不到它.这让我疯了.
我的客户端有一个存储SQL Server小数的标准,带有十进制(13,4)规范.结果,在一个非常大且仍在增长的模式中,我有近百个这样的语句:
builder.Entity<MyObject>()
.Property(x => x.MyField1)
.ForSqlServerHasColumnType("decimal(13,4)");
builder.Entity<MyObject>()
.Property(x => x.MyField2)
.ForSqlServerHasColumnType("decimal(13,4)");
builder.Entity<MyObject2>()
.Property(x => x.MyField1)
.ForSqlServerHasColumnType("decimal(13,4)");
Run Code Online (Sandbox Code Playgroud)
如果有一个功能,我可以直接告诉EF所有小数都应该是十进制(13,4)默认情况下,我想使用它.如果没有,我可以使用反射循环遍历模型中的每个对象/属性,所以我可以在几个语句中执行此操作吗?
就像是:
foreach(var efObj in EntityFrameWorkObjects)
{
foreach (var objProperty in efObj)
{
if (objProperty is decimal || objProperty is decimal?)
{
builder.Entity<efObj>()
.Property(x => x.efObj)
.ForSqlServerHasColumnType("decimal(13,4)");
}
}
}
Run Code Online (Sandbox Code Playgroud)
反射似乎是一个很好的方法,因为那时我可以实现一些其他约定,如果一个对象有一个名称和描述,名称是必需的,并限制为256个字符.
更新: 我按照Ivan评论中的链接进行了调整,并对其进行了调整,这对我有用:
foreach (var p in builder.Model
.GetEntityTypes()
.SelectMany(t => t.GetProperties())
.Where(p =>
p.ClrType == typeof(decimal) ||
p.ClrType == typeof(decimal?)))
{
p.SqlServer().ColumnType = "decimal(13,4)";
}
Run Code Online (Sandbox Code Playgroud)
不久之后,他提供了一个完整的答案,我稍微改了一下,使用十进制和可以为零的小数:
foreach (var pb in builder.Model
.GetEntityTypes() …Run Code Online (Sandbox Code Playgroud) 我在这里发现了一堆类似的问题但经过3个小时的阅读和尝试后,我发布了自己的问题.我为复制道歉,但我不知道这里发生了什么.
所以我有这个javascript函数:
function saveSetting(settingName, settingValue) {
$.post(
appUrl + "Account/SaveSetting",
{ settingName: settingName, settingValue: settingValue },
function (data) {
alert(data.Result);
},
"json"
);
}
Run Code Online (Sandbox Code Playgroud)
我称之为:
saveSetting("bookFontSize", fontSize);
Run Code Online (Sandbox Code Playgroud)
其中fontSize是"10.5"或类似的东西.
Chrome报告的帖子标题如下:
Request URL:http://localhost:1227/Account/SaveSetting?callback=jQuery151022712289774790406_1298625531801
Request Method:POST
Status Code:200 OK
Request Headers
Accept:text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:42
Content-Type:application/x-www-form-urlencoded
Cookie:ASP.NET_SessionId=jwpzp4okerckuh2bhkl2pnwu; .ASPXAUTH=429EEA1CFBFD9D5702011C59F77F18F8DAEEEB412314D608E86289779DF8ED9C80C6E0370B7108D68C44B088C7CB6998F34C59DDCFF8EA9D4A556495F5D40DF21737392DCF5942F73726882BEC354C35599864F751751FD458473FA4541AF25294F7E16DC00AABD4DEC43B321B0ECCBF195FD419C3BC912017275FC478A27F0C12A28D124A663EA5F19E5AEFFB276603
Host:localhost:1227
Origin:http://localhost:1227
Referer:http://localhost:1227/Read/116/1
User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13
X-Requested-With:XMLHttpRequest
Query String Parameters
callback:jQuery151022712289774790406_1298625531801
Form Data
settingName:bookFontSize
settingValue:10.5
Response Headers
Cache-Control:private, …Run Code Online (Sandbox Code Playgroud) 这似乎是一个常见的问题,我发现了几个Stack Overflow问题,但它们似乎都与MSBuild有关.
我试图通过在Visual Studio中右键单击我的asp.net 5 rc1项目并调用基于文件系统的发布配置文件来发布.
它的设置如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<CompileSource>False</CompileSource>
<_DefaultDNXVersion>dnx-clr-win-x86.1.0.0-rc1-final</_DefaultDNXVersion>
<UsePowerShell>True</UsePowerShell>
<IISCommand>web</IISCommand>
<WebRoot>wwwroot</WebRoot>
<WwwRootOut>wwwroot</WwwRootOut>
<IncludeSymbols>False</IncludeSymbols>
<Native>False</Native>
<IgnoreDNXRuntime>False</IgnoreDNXRuntime>
<publishUrl>C:\Source\CCollections\artifacts\bin\CCollections.Client.Web.Angular\Release\PublishOutput</publishUrl>
<DeleteExistingFiles>False</DeleteExistingFiles>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
这产生了这个输出:
C:\Source\CCollections\src\CCollections.Client.Web.Angular>C:\Users\Christopher\.dnx\runtimes\dnx-clr-win-x86.1.0.0-rc1-final\bin\dnu.cmd publish "C:\Source\CCollections\src\CCollections.Client.Web.Angular" --out "C:\Users\Christopher\AppData\Local\Temp\PublishTemp\CCollections.Client.Web.Angular96" --configuration Release --runtime dnx-clr-win-x86.1.0.0-rc1-final --wwwroot "wwwroot" --wwwroot-out "wwwroot" --iis-command "web" Microsoft .NET Development Utility Clr-x86-1.0.0-rc1-16202 Executing script 'prepublish' in project.json npm WARN package.json ASP.NET@0.0.0 No description npm WARN package.json ASP.NET@0.0.0 No repository field. npm WARN package.json ASP.NET@0.0.0 No …
当会话处于活动状态时,我无法在asp.net中一次发出多个请求.为什么存在这种限制?有办法解决它吗?
这个问题可以通过一个只有3个简单的aspx页面的WebForms应用程序来演示(虽然这个限制仍然适用于asp.net mvc).
创建一个asp.net 3.5 Web应用程序.
应该只有三个页面:NoWait.aspx,Wait.aspx和SessionStart.aspx
NoWait.aspx在默认div标签之间添加了这个单个块:<%= DateTime.Now.Ticks%>.此页面的代码隐藏是默认(空).
Wait.aspx看起来就像NoWait.aspx,但在代码隐藏中有一行添加到Page_Load:Thread.Sleep(3000); //等3秒
SessionStart.aspx看起来也像NoWait.aspx,但它在代码隐藏中有这一行:Session ["Whatever"] ="Anything";
打开浏览器并转到NoWait.aspx.它在响应中正确显示了一个数字,例如:"633937963004391610".保持清爽,并不断改变数量.到目前为止很棒!在同一浏览器中创建一个新选项卡,然后转到Wait.aspx.它坐3秒钟,然后将数字写入响应.到目前为止很棒!不,试试这个:转到Wait.aspx,当它旋转时,快速切换到NoWait.aspx并刷新.即使在Wait.aspx正在睡眠时,NoWait.aspx也会提供响应.到目前为止很棒.在Wait.aspx旋转时,您可以继续刷新NoWait.aspx,服务器每次都会愉快地发送响应.这是我期望的行为.
现在是它变得奇怪的地方.
在第3个选项卡中,在同一浏览器中,访问SessionStart.aspx.接下来,选中Wait.aspx并刷新.当它旋转时,切换到NoWait.aspx并刷新.在Wait.aspx完成运行之前,NoWait.aspx不会发送响应!
这证明,当会话处于活动状态时,您无法与同一用户进行并发请求.请求全部排队并同步提供.我不指望或理解这种行为.我已经在Visual Studio 2008的内置Web服务器以及IIS 7和IIS 7.5上测试了这个.
所以我有几个问题:
1)我是否正确,这里确实存在限制,或者我的测试是否无效,因为我做错了什么?
2)有办法解决这个限制吗?在我的网络应用程序中,某些事情需要很长时间才能执行,我希望用户能够在等待大量请求完成时在其他选项卡中执行操作.我可以以某种方式配置会话以允许"脏读"吗?这可以防止它在请求期间被锁定?
3)为什么存在这种限制?我想很好地理解为什么这种限制是必要的.如果我知道,我想我会是一个更好的开发者!
我正在使用此方法序列化我的对象:
public static string XmlSerialize(object o)
{
var stringWriter = new StringWriter();
var xmlSerializer = new XmlSerializer(o.GetType());
xmlSerializer.Serialize(stringWriter, o);
string xml = stringWriter.ToString();
stringWriter.Close();
return xml;
}
Run Code Online (Sandbox Code Playgroud)
它使XML像这样开始:
<?xml version="1.0" encoding="utf-16"?>
<MyObject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
Run Code Online (Sandbox Code Playgroud)
但我希望它看起来像这样:
<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
<MyObject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
Run Code Online (Sandbox Code Playgroud)
那么,如何将编码更改为Windows-1252并设置standalone = yes?另外,如何让对象排除xmlns值?
我见过几个类似的问题,比如这个问题,但是我希望它对我来说可能更简单,也许是通过在某个地方设置一些属性?
更新2:在查看John的回答和评论之后,再考虑这个问题,我决定采用第二种方法.我不认为一次为第三方创建这个古怪的自定义xml应该被称为通用的"XmlSerialize".
所以,我创建了第二个获取XML文档的方法,首先,删除一个名称空间元素,如下所示:
xElement.Attributes().Where(a => a.IsNamespaceDeclaration && a.Value == "http://www.w3.org/2001/XMLSchema").Remove();
Run Code Online (Sandbox Code Playgroud)
然后,它用John的代码将它写入XML.最后它返回xml,遵循以下输出:
new XDeclaration("1.0", "Windows-1252", "yes").ToString()
Run Code Online (Sandbox Code Playgroud)
这很难看,但它让我真正得到了第三方理解我的XML所需要的东西.
我有一个ICS文件.它验证.它看起来像这样:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//WA//FRWEB//EN
BEGIN:VEVENT
UID:FRICAL201
SEQUENCE:0
DTSTAMP:20081108T151809Z
DTSTART:20081109T121200
SUMMARY:11/9/2008 12:12:00 PM TRIP FROM JFK AIRPORT (JFK)
LOCATION:JFK AIRPORT (JFK)
END:VEVENT
END:VCALENDAR
Run Code Online (Sandbox Code Playgroud)
我双击它,它完全进入Outlook 2007.然后,我双击另一个看起来像这样的ICS文件:
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//WA//FRWEB//EN
BEGIN:VEVENT
METHOD:REQUEST
UID:FRICAL201
SEQUENCE:1
DTSTAMP:20081108T161809Z
DTSTART:20081109T121300
SUMMARY:11/9/2008 12:13:00 PM TRIP FROM JFK AIRPORT (JFK)
LOCATION:JFK AIRPORT (JFK)
END:VEVENT
END:VCALENDAR
Run Code Online (Sandbox Code Playgroud)
正如在rfc中所解释的那样,UID是相同的,序列号是一个更大的,所以我希望outlook更新我以前的事件条目,但它所做的只是插入第二个.
如何制定ICS文件以便Outlook知道更新事件?我在上面引用的主题中的原始海报说他得到它以METHOD和ORGANIZER回应但是根据我的经验,METHOD没有效果,并且ORGANIZER导致不希望的行为,Outlook希望将事件通过电子邮件发送给某人.我只是想让它更新日历.
asp.net-mvc ×3
asp.net-core ×2
.net ×1
asp.net ×1
dnu ×1
encryption ×1
icalendar ×1
javascript ×1
jquery ×1
outlook ×1
outlook-2007 ×1
ssis ×1