小编Jos*_*yes的帖子

将用户个人资料图片存储在磁盘或数据库中?

我正在构建一个asp.net mvc应用程序,用户可以将图片附加到他们的个人资料中,也可以在系统的其他区域附加,例如仪表板上显示最近消息等的消息小工具.

当用户上传这些内容时,我想知道将它们存储在数据库或磁盘上是否更好.

数据库优势

  • 易于备份整个数据库,并保留配置文件内容/图像与相关的配置文件/用户表

  • 当我稍后在轨道上构建Web服务时,他们可以从一个位置(数据库)中提取所有与profiile相关的数据

文件系统的优点

  • 从磁盘加载文件可能更快

  • 还有其他什么好处

其他网站在哪里存储此类信息.对于类似这样的事情,我是否有点担心数据库性能?

也许有一种方法可以缓存从数据库中提取的图像一段时间?

或者,将这些图像存储在数据库中的想法如何,但是将它们复制到磁盘,以便Web服务器可以从那里加载它们?这似乎既提供了Db的备份和便利,同时提供了磁盘上文件的速度优势.

有问题的基础设施

  • 该网站将部署到运行NTFS文件系统的Windows Server 2003上的IIS.
  • 该数据库将是SQL Server 2008

摘要

在SO上阅读很多相关的线程,许多人现在趋向于SQL Server Filestream类型.然而,从我可以收集的内容(我可能是错的),当文件非常小时,没有太大的好处.然而,当文件是多个MB或更大时,文件流看起来会大大提高性能.

由于我的个人资料图片往往约为5kb,我决定将它们作为varbinary(max)存放在数据库的文件存储中.

在ASP.NET MVC中,我确实看到了一些性能问题,返回FileContentResults从这样的数据库中拉出的图像.所以如果在我的应用程序缓存中找不到该文件的位置,我最终会在磁盘上缓存该文件.

所以我想我选择了混合动力车;

  • 数据库存储使数据烘焙更容易,文件直接链接到配置文件
  • 影子复制到磁盘以允许更好的缓存

在任何时候我都可以删除磁盘上的缓存文件夹,并且当重新请求图像时,它们将在第一次命中时被重新复制并在之后从缓存中提供.

profile image-upload

17
推荐指数
2
解决办法
9991
查看次数

EF 4代码如何首先处理生产环境中的架构更改?

传统上我总是手工编写我的sql脚本,所以它们很好而且干净(我不是生成者的粉丝)并且发布到发布版本,我提供了一个全新的安装脚本和来自之前版本的迁移脚本表,改变现有的表等.这都非常标准.

我没有太多时间来使用EF 4代码,但如果它在生产环境中实际可行,我很有兴趣使用它.

假设你有一个代码优先的方法,如果一个数据库不存在,将自动创建一个数据库.如果您发布具有架构/模型更改的软件的新版本会发生什么.EF是否足够智能更新数据库模式以匹配更新的EF模型?

脚本

  1. 客户端在其服务器上安装asp.net MVC网站.首次运行时,将创建一个新的数据库
  2. 客户端使用网站一段时间,数据库将填充一些数据
  3. 与此同时,该网站的新版本发布,EF模型也发生了变化
  4. 客户端下载新版本,部署网站并指向现有数据库

代码首先仅对初始部署有用,还是足够聪明以更新现有数据库版本以便像这样发布?

asp.net-mvc entity-framework entity-framework-4 ef4-code-only

14
推荐指数
1
解决办法
4266
查看次数

外部ASP.NET MVC 3区域不在运行时编译(在预览1中工作但不在RC中工作)

问题

ASP.NET MVC 3 RC在运行时(浏览时)向外部MVC区域发出编译错误.网站本身有效,但插件拒绝加载抛出与未知模型有关的编译问题.

LogOn.cshtml

@model TestProject.Models.LogOnModel
@{
    View.Title = "Log On";
}
//.....omitted for brevity
Run Code Online (Sandbox Code Playgroud)

运行时抛出错误.

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS0103: The name 'model' does not exist in the current context

Source Error:


Line 38:         public override void Execute() {
Line 39: 
Line 40: Write(model);
Line 41: 
Line 42: …

c# asp.net-mvc asp.net-mvc-3

13
推荐指数
2
解决办法
9153
查看次数

如何最好地实施保存| 保存并关闭| 取消ASP.NET MVC 3 RC中的表单操作

我想知道在asp.net mvc 3 RC中提交表单时如何实现多个表单操作.

如果我正在编辑用户,例如我想要一个带有以下按钮的操作栏;

"保存"| "保存并关闭"| "取消"

保存 - 提交表单并保存,返回编辑屏幕.可以轻松实现为标准输入/提交按钮.这里没什么特别的.

这可能是控制器代码

public ActionResult Edit(UserViewModel model)
{
  ...
  return RedirectToAction("Edit", model.Id");
}
Run Code Online (Sandbox Code Playgroud)

取消 - 只需返回上一屏幕即可.我正在考虑为此使用锚标签.

<a href="@Request.UrlReferrer" class="button">Cancel</a>
Run Code Online (Sandbox Code Playgroud)

但是当你需要提交相同的表单数据时,我很难理解如何实现"保存并关闭".我想知道有一个可以为空的关闭参数吗?

public ActionResult Edit(UserViewModel model, bool? close)
{
  ...
  return  close.GetValueOrDefault(false) ? RedirectToAction("Index", model.Id" : RedirectToAction("Edit", model.Id");
}
Run Code Online (Sandbox Code Playgroud)

但是,在这种情况下,如何将此额外参数与表单一起提交?

如果可能的话,我想在上面的模型中使用单个表单操作来处理提交.

我也很感兴趣,如果有其他人提出了一个很好的用户交互模型围绕这个想法.

我最终使用了Omar的建议,但是我没有传入一个字符串,而是接受了枚举,所以我不需要在所有控制器中进行字符串检查.

public ActionResult Edit(UserViewModel model, FormAction actionType)
{
  // pre-check
  if (actionType == FormAction.Cancel)
     // just return user to previous view and don't save.

  // Save code

  if …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-3

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

如何在asp.net成员资格中最好地处理权限(而不是角色),特别是在ASP.NET MVC中

有很多关于设置asp.net成员资格,角色提供者等的问题(和信息).您是否应该使用microsoft提供的内置平台,或者角色扩展您自己的基类和角色.

我决定扩展默认提供程序并实现我自己的成员资格和角色提供程序.现在我的问题,特别是围绕角色身份验证.

传统上,您可以创建角色,例如"经理,管理员,员工,超级用户"或任何您拥有的角色.但是对于我认为是更精细控制的权限,您应该/应该做什么?让我详细说明......

在我的asp.net mvc网站中,我有不同的领域,如管理,管理,消息传递,报告等.我会为"管理员","经理","报告者"等各个角色创建角色.如果没有相应的角色,您可以无法访问该网站的该区域.所以我会在类级别锁定整个控制器.

但现在以一个地区为例; 消息,并说我想为CRUD获得更好的谷物权限; 创建消息,查看/阅读消息,编辑消息,删除消息等.

最后我的问题.如何实现这种更精细的控制?我看到的一种方法(不确定它是否是一个好方法),就是为所有东西创建asp.net成员角色.所以我可能......

Messenger(广义级角色),CreateMessage,ReadMessage,EditMessage,DeleteMessage.

一方面,我希望一些用户能够阅读/查看消息.但不一定要创建或删除它们.单个控制器操作可以应用特定角色.

你觉得这种方法有什么问题吗?你有更好的主意吗?

迄今解决方案

我决定创建自己的架构并实现自定义成员资格和角色提供程序.我的架构包括;

  • 用户
  • 用户资料
  • 允许
  • PermissionAssignment
  • 角色
  • RoleAssignment

将在第二天或第二天离开,但是当我有机会时会更新更多信息.

asp.net-mvc asp.net-membership asp.net-authentication asp.net-roles

11
推荐指数
1
解决办法
5729
查看次数

如何在C#.NET中实现OAuth2提供程序和使用者

我一直在oauth2上进行一些搜索,并认为它可能非常适合我正在构建的一些WCF休息服务,这些服务将由一些WPF应用程序和MVC Web应用程序使用.其想法是最初要求用户使用他们的用户名/密码登录并接收访问令牌,该访问令牌使他们能够访问上述资源.

在这里搜索SO我没有找到关于oauth2的更多信息,除了一些与Facebook等消费者相关的问题.

我想知道是否有人可以提供一些实施oauth2的技巧(或者知道任何好的资源).我对提供者(身份验证和发布访问令牌)以及客户端/消费者端感兴趣.

.NET OAuth2库

我找到的唯一的OAuth2库来自dotnetopenauth,它似​​乎也很重要.在这个阶段,我宁愿一个更轻一点的图书馆,而且只是包含了oauth2

还有其他oauth2库吗?

.net c# wpf asp.net-mvc oauth

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