我尝试创建能够在Windows Azure云中运行的应用程序,但也可以在本地服务器上运行。在Windows Azure和本地服务器上运行ASP.NET应用程序
该应用程序的大部分部分已经可以正常工作。但有一些功能我不知道如何让它们在两者上运行,例如:
用户可以上传附件。在Azure中,文件存储在Windows Azure存储中,在本地服务器上它们应该存储在本地文件夹中。
我不知道如何管理这个。
我尝试创建能够在Windows Azure云中运行的应用程序,但也可以在本地服务器上运行。在Windows Azure和本地服务器上运行ASP.NET应用程序
该应用程序的大部分部分已经可以正常工作。但有一些功能我不知道如何让它们在两者上运行,例如:
用户可以上传附件。在Azure中,文件存储在Windows Azure存储中,在本地服务器上它们应该存储在本地文件夹中。
我不知道如何管理这个。
我想建议您了解控制反转,因为您可以根据选定的主机平台切换文件存储和其他内容。
例如,你有一个接口称为IFileStorage
有这样的方法(及以上):
和IFileStorage
的两种实现方式:
在这一天结束时,你会做的是:
IFileStorage storage = DependencyManager.Resolve<IFileStorage>();
storage.Create("SomeFile.txt");
storage.Append("SomeFile.txt", "Hello world");
和控制配置的某些反转将映射此时,相应的IFileStorage
实现取决于托管平台。
如果您想了解更多关于反转控制的:
最后,如果你认为这是正确的方式,检查温莎城堡,这是一个伟大的,控制(和其他事物).NET上的稳定的反转框架:
听起来像是一种可能的解决方案。但我想知道如何确定应用程序是否在Azure上运行。 – Gesh
您不需要弄清楚:Azure部署已经配置了可以与Azure存储配合使用的IFileStorage实现,等等。这只是一个配置的事情。 –
+1我在项目中使用了这种确切的方法,它完美地工作(除了它使用MEF) –
我也想知道是否有办法有两个web.config文件(一个用于Azure的模式,一个用于本地模式),所以我不必编辑配置文件时,我创建一个包Azure或IIS。 – Gesh
您可以使用MSBuild任务,或者您可以为此开发的自定义任务。也就是说,在构建后,您可以定义自定义目标并运行它,以便预编译的Web将具有合适的web.config。如果您需要更多信息,请在此注释,我会更新我的问题(我知道您接受了它,但我可以为您加强;)! –