小编sim*_*olo的帖子

WebAPI文件上传 - 无需将文件写入磁盘

有关处理使用FormData上载到ASP.NET WebAPI处理程序的文件的所有文档/教程/问题MultipartFormDataStreamProvider用于处理多部分流以将其拆分为相关的表单字段和文件.

var root = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(root);

await Request.Content.ReadAsMultipartAsync(provider);

foreach (MultipartFileData file in provider.FileData)
{
   // File
}
Run Code Online (Sandbox Code Playgroud)

但是,在处理期间,文件会自动写入目录.

当我可以HttpContext.Current.Request.Files[0].InputStream直接在内存中使用访问给定的文件流时,似乎有很多麻烦.

WebAPI如何直接访问文件流而无需使用IO开销MultipartFormDataStreamProvider

官方教程:http://www.asp.net/web-api/overview/advanced/sending-html-form-data,-part-2

c# asp.net multipartform-data asp.net-web-api

45
推荐指数
1
解决办法
4万
查看次数

ASP.NET MVC5每个Razor Page在第一次加载时非常慢

这与第一个请求到达时的延迟体验不同,但这是每次第一次访问基于Razor的视图时所经历的延迟,可能需要一两秒钟.对该视图的所有后续请求都非常快.即使对于没有进行任何编程工作的简单视图(例如访问数据库等),也会发生这种情况.

我已经debug=false在配置文件中的system.web下的编译标签中确保了这一点.

我还删除了设置Razor作为唯一的视图引擎 Global.asax

什么可能导致这种延迟? 这似乎是旧的asp.net'网站'在它转移到'web应用程序'之前经历的一个问题,其中每个.aspx.cs代码隐藏都是在部署而不是在运行时编译的.Razor还会受此影响吗?

c# asp.net asp.net-mvc razor

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

为什么不在CORS未命中设置'Vary:Origin'响应?

在发出CORS请求时,如果请求的Origin位于允许的源列表中,则响应包含Access-Control-Allow-Origin标头和Vary: Origin标头.

Vary:Origin告诉CDNs等,响应是根据请求者的Origin头值协商的.

问题是(我已经测试了领先的CDN提供商),如果请求者在他们的请求中没有提供Origin头,或者Origin值不是允许的那个,则响应不包括变化:起源于回应.

如果CDN预先形成CORS总是在响应头中响应Vary:Origin吗? 如果不是,CDN会认为它可以对任何Origin值提供相同的响应.然后,通过使用随机原始值进行许多请求,可以填充CDN缓存.

cdn cors amazon-cloudfront azure-cdn

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

为什么在JavaScript中使用'lib'vs'src'目录名?哪个是'标准'?

GitHub上有许多流行的JavaScript库和应用程序,有些将原始源代码放在/src目录中,有些放在/lib目录中.

我倾向于开发人员这样做取决于他们成长的语言.所以我看到很多Java开发人员使用/lib(他们通常也最终将他们打包的JS放到一个/bin目录中).与此同时,我经常观察那些使用/src输出打包的JS到/dist文件夹的人.

什么被认为是JavaScript的标准模式,srclib.也许根本没有正确或错误的答案.

javascript naming-conventions

18
推荐指数
2
解决办法
6757
查看次数

文本CSS渲染性能:RGBA vs HEX vs OPACITY

设计人员总是使用不透明度而不是实际颜色值来提供CSS.这会影响浏览器中的渲染性能吗?

总是白色的背景下渲染速度更快,我实际上并不关心透明度.

<span>Hello</span>
Run Code Online (Sandbox Code Playgroud)
  1. span {color: black; opacity: 0.7;}
  2. span {color: rgba(0, 0, 0, 0.7);}
  3. span {color: #b3b3b3;}

我的直觉表示不透明度较慢(尽管放在GPU中),因为现在在渲染时,浏览器必须考虑背景,因此任何更改都会导致它重新绘制对象,因为这种透明性,而静态彩色对象将从不改变.

css performance rendering opacity

15
推荐指数
1
解决办法
870
查看次数

实体框架:SqlGeography与DbGeography

这两个对象在Microsoft SQL数据库中表示相同Geography数据类型的区别或预期目的是什么?

System.Data.Entity.Spatial.DbGeography
Run Code Online (Sandbox Code Playgroud)

Microsoft.SqlServer.Types.SqlGeography
Run Code Online (Sandbox Code Playgroud)

它们不能在彼此之间施放,但SqlGeography在创建点,多边形等时有额外的命令.

我认为这System.Data.Entity只是用于实体框架,而直接Microsoft.SqlServer使用是SqlCommand直接使用?

c# sql-server entity-framework spatial

13
推荐指数
1
解决办法
6414
查看次数

GIT Split Repository目录保留*move/renames*history

假设您拥有存储库:

myCode/megaProject/moduleA
myCode/megaProject/moduleB
Run Code Online (Sandbox Code Playgroud)

随着时间的推移(月),您重新组织项目.重构代码以使模块独立.megaProject目录中的文件将移动到它们自己的目录中.强调移动 - 保留这些文件的历史.

myCode/megaProject
myCode/moduleA
myCode/moduleB
Run Code Online (Sandbox Code Playgroud)

现在您希望将这些模块移动到他们自己的GIT仓库中.只留下megaProject的原件.

myCode/megaProject
newRepoA/moduleA
newRepoB/moduleB
Run Code Online (Sandbox Code Playgroud)

记录该filter-branch命令是为了执行此操作,但是当文件移出目标目录之外时,它不会跟踪历史记录.因此,历史记录从文件移动到新目录开始,而不是文件的历史,然后它们存在于旧的megaProject目录中.

如何基于目标目录拆分GIT历史记录,并遵循此路径之外的历史记录 - 只保留与这些文件相关的提交历史记录而不是其他内容?

关于SO的众多其他答案主要集中在拆分回购 - 但没有提及拆分和跟随移动历史.

git

11
推荐指数
2
解决办法
983
查看次数

当无法匹配Controller路径时,.NET MVC会抛出500 Server错误而不是404 Not Found

出于某种原因,当将dud URL输入到不存在的文件/目录/控制器时,会引发以下错误:

System.Web.HttpException未找到路径''的控制器或未实现IController System.Web.Mvc.IController> GetControllerInstance(System.Web.Routing.RequestContext,System.Type)

IIS然后遵循常规错误处理并显示适用于500内部服务器错误的页面.应遵循404 Not Found错误处理逻辑. 我正在测试的另一个Web应用程序在找不到路由时不会抛出此HttpException,并正常返回404.那么触发这个HttpException是什么?

为什么以及如何遵循404路由来处理此类错误而不是500? 以下是错误处理的配置.没有其他代码处理错误.那么为什么总会显示500错误呢?就好像默认处理将"无法找到控制器"异常作为错误处理,而实际上它是未找到的.

<system.webServer>
 <httpErrors errorMode="Custom" existingResponse="Replace" defaultPath="/StaticErrors/Default.html" defaultResponseMode="ExecuteURL">
   <clear />
   <error statusCode="404" path="/mvcError/Http404" responseMode="ExecuteURL" />    
   <error statusCode="500" path="/mvcError/Http500" responseMode="ExecuteURL" />     
 </httpErrors>
</system.webServer>
<system.web>
 <customErrors defaultRedirect="/StaticErrors/Default.html" mode="On" redirectMode="ResponseRewrite">
   <error redirect="/mvcError/Http404" statusCode="404" />          
   <error redirect="/mvcError/Http500" statusCode="500" />         
 </customErrors>
</system.web>
Run Code Online (Sandbox Code Playgroud)

失败的请求跟踪显示了这一点.基本上没有路由是圆的,抛出HttpException,500路由处理开始,而不是404.我没有做任何事情来覆盖任何正常的默认行为.在HandleErrorAttribute不添加任何的MVC过滤器.

在此输入图像描述

asp.net asp.net-mvc exception-handling

9
推荐指数
1
解决办法
3512
查看次数

WebDeploy发布不上传PDB文件(MVC预编译的webapp,VS2013)

通过Visual Studio(在本例中为2014)中的"发布"命令使用IIS WebDeploy发布Web应用程序时,将上载除主程序集PDB文件之外的所有文件.

web.config已debug=false设置.相关的构建配置只有pdb-set,发布配置文件设置为发出调试信息.

为什么没有上传pdb文件?

在此输入图像描述 在此输入图像描述

相当令人困惑的是,包含了编译的MVC视图的pdb文件,而不是所使用的任何实际程序集的pdbs.

添加文件(domain\bin\App_Web_x13lezpq.pdb).// MVC编译视图更新文件(domain\bin\MyWebApplication.dll).//主DLL没有上传PDB,但无论如何都会在bin文件夹中生成一个.

asp.net-mvc msdeploy visual-studio pdb-files webdeploy

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

美国大陆 IANA 时区

IANA 在代表世界的城市中维护着许多时区。我不想在 UI 中维护所有区域的列表(因为它是第三方系统,这样做是不切实际的)并仅提供 4 个主要选择。现在哪个 IANA 值最能代表这些选择?

  • 东部时区:America/New_York
  • 中部时区:America/Chicago
  • 山区时区:America/Denver
  • 太平洋时区:America/Los_Angeles

我选择了这些城市来绘制每个区域的地图。这些是适当的选择吗?

timezone iana

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