Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果我需要能够在ASP.NET MVC中处理附件,您将如何设计消息传递功能?_C#_Asp.net Mvc_Messaging_Inbox - Fatal编程技术网

C# 如果我需要能够在ASP.NET MVC中处理附件,您将如何设计消息传递功能?

C# 如果我需要能够在ASP.NET MVC中处理附件,您将如何设计消息传递功能?,c#,asp.net-mvc,messaging,inbox,C#,Asp.net Mvc,Messaging,Inbox,我在一个ASP.NETMVC网站上工作,我的部分要求是用户能够相互发送消息 从表面上看,这不是一项很难的任务。消息传递最简单的形式就是一个“消息”表,其中包含“SenderID、ReceiversID(FK)、Subject、Message”等内容 但是,您如何处理“附件”?用户可以在我们的网站上浏览包含财务信息的机密PDF,他们可以单击“发送报告到”按钮将报告连同文本消息发送给其他用户 类似地,他们可以上传多个文件,并将其与消息一起发送(而不仅仅是他们可以浏览的内部文档) 您将如何在ASP.N

我在一个ASP.NETMVC网站上工作,我的部分要求是用户能够相互发送消息

从表面上看,这不是一项很难的任务。消息传递最简单的形式就是一个“消息”表,其中包含“SenderID、ReceiversID(FK)、Subject、Message”等内容

但是,您如何处理“附件”?用户可以在我们的网站上浏览包含财务信息的机密PDF,他们可以单击“发送报告到”按钮将报告连同文本消息发送给其他用户

类似地,他们可以上传多个文件,并将其与消息一起发送(而不仅仅是他们可以浏览的内部文档)

您将如何在ASP.NET MVC中处理此问题

我考虑过在某个地方有一个附件文件夹和一个附件表,因此如果用户单击“发送报告到”或上载文档,该文件将复制到附件文件夹,并在附件表中创建一个条目

然后,如果用户单击具有/messaging/attachments/{fileID}等路由的链接,它将向他们发送相应的文件。我甚至可以在attachments/files表中维护每个文件的校验和,这样如果用户发送相同的报告,我们就不会复制attachments文件夹中的文件

在某种程度上,我觉得我在发明电子邮件,但客户坚持认为,为了保持安全合规性,我们不能简单地通过电子邮件将这些报告发送给用户,他们必须登录我们的系统才能检索这些报告


这是一个正确的方法吗?或者我应该看一个不同的方法吗?

< P>我不确定你的需求,但是你可以考虑使用CMS系统或SharePoint。这些将具有内置的文档管理和消息传递功能所需的机制。即使您的应用程序是独立的,您仍然可以将其作为后端与sharepoint集成,以减轻大部分复杂性


在大多数情况下,你是在重新发明轮子。。。这是一个非常大的轮子。尽量不要被碾过:)

我基本上就是这样做的。这个主意似乎还可以。如果使用SQLServer2008,可以考虑使用FILESTREAM。它使文件的存取变得更容易。我也是这样做的。。。万一你没有,考虑使用GUID用于FielID的含义——它只是另一层安全性(默默无闻)。这是我经常使用的方法(记住使用GUID而不是int会增加额外的开销)。我不同意控制盘的大小-在受限环境中,不必担心是否符合标准,这是一个相当简单的问题。根据问题中的信息,这可能不是一个简单的例子。KingNestor正在讨论多个附件,有些来自远程存储,有些来自本地客户端。他说的是上传,转发,处理安全问题,减少文件复制。等等,这是一个很好的领域,但它不是一个微不足道的。这些特性需要花费大量的时间来开发和实现。由于这是一个很好的解决方案,但是,有一些现有的解决方案,您可以使用,而不是滚动您自己的。