ASP.NET MVC异步测试数据库链接

问题描述

请教各位大神。现在有一个项目是多处开发,架设了多个数据库服务器。现在的问题在这儿:不同的地点,只能访问其中一处数据库服务器。我想在Web.config中把这多个数据库服务器地址都配置了。在网站运行时,自动测试当前可以链接到哪个服务器,则以后的数据查询都使用这个数据库服务器。问题有两点:1.如何在用户打开网站时,第一步就先测试数据库服务器。2.如何使用异步的方式进行同时测试。因为同步测试有可能第一个就访问不到,要耗费较多时间才能返回。因为可能存在内外网,所以单纯根据IP地址来做不太可能。谢谢!

解决方案

解决方案二:
你可以设计一个格式,将”服务器IP/域名“与”数据连接串名“匹配,记录到一个文本文件中。当然记录到webconfig文件也行,就是格式编辑起来麻烦一点。
解决方案三:
这个IP判断跟什么”内外网“没有任何关系。你取的是访问服务器时本地(服务器)信息。
解决方案四:
在主数据库的用户表里加个字段,用来设置这个用户是用那个连接数据库的就可以了。登录时会根据这个字段找到相应的连接
解决方案五:
在Global.asax的Application_Start事件中启动一个Task来测试哪个数据库可用。然后将数据库的配置纪录到文件里面。以后每次都读取这个文件就行了。
解决方案六:
引用3楼rpwlp888的回复:

在主数据库的用户表里加个字段,用来设置这个用户是用那个连接数据库的就可以了。登录时会根据这个字段找到相应的连接

lz的意思是不要求手动设置什么东西。
解决方案七:
引用5楼sp1234的回复:

lz的意思是不要求手动设置什么东西。

感谢大版回复!你说的配置实际上已经在web.config中配置了,主要的问题还在于异步测试访问的机制。目前我的做法是在用户登录界面使用ajax异步同时测试所有的数据库连接,哪个通过就设置哪个为以后的连接字符串。当然如果用户不打开登录界面,就不行了。不过我们的网站是用户必须登录的。
解决方案八:
引用4楼lifeilin6671的回复:

在Global.asax的Application_Start事件中启动一个Task来测试哪个数据库可用。然后将数据库的配置纪录到文件里面。以后每次都读取这个文件就行了。

最开始我也是这样考虑的,不过实际做的时候,发现异步函数并没有异步执行,还是会卡死,等到异常捕获后,才进行下一个数据库连接的测试。

时间: 2024-12-30 18:33:49

ASP.NET MVC异步测试数据库链接的相关文章

ASP.NET MVC路由扩展:链接和URL的生成

ASP.NET 路由系统通过注册的路由表旨在实现两个"方向"的路有功能,即针对入栈请求的路由和出栈URL的生成.前者通过调用代表全局路由表的RouteCollection对象的GetRouteData方法实现,后者则依赖于RouteCollection的GetVirtualPathData方法,而最终还是落在继承自RouteBase的路由对象的同名方法的调用上.为了编程的方面,ASP.NET MVC为了设计了HtmlHelper和UrlHelper这两个帮助类,我们可以通过调用它们的A

如何进行ASP.NET MVC的测试

本文参考了http://stephenwalther.com/blog/的内容. 今天需要对ASP.NET MVC的Controller进行测试,我们都知道当我们在测试工程里new一个controller时,这个controller里的httpcontext是空的,也就是session,cookie, form等都是空. 方法一:Mock controller的HttpContext, 暂时失败 那么我们如何对controller进行测试呢,我首先想到的是mock一个httpcontext,这里

ASP.NET MVC HandleErrorAttribute 和 远程链接

最近有个项目使用ASP.NET MVC开发,遇到一个问题,表现为:通过本地(localhost,本地ip)访问一切正常,但是通过远程链接的时候,呈现给浏览器的都是http 500内部服务器错误,通过查看asp.net mvc的源代码发现HandleErrorAttribute.cs的第92行 filterContext.ExceptionHandled = true; filterContext.HttpContext.Response.Clear(); filterContext.HttpCo

ASP.NET MVC异步获取和刷新ExtJS6 TreeStore_实用技巧

从数据库获取构造树结构是ExtJS TreePanel的核心技术,常用方法是TreeStroe里配置proxy,这种方式的root成了一个不受控制的节点. TreeStroe的root实际是一个层叠json数据,大部分情况是直接写一些简单数据,但在实际应用中必定是要从数据库读取的.我的方法是先用Ext.Ajax.request获取root数据形成TreeStroe.定义一个全局的TreeStroe名字是mTreeStore,用Ext.Ajax.request获得root数据.TreeStoreR

请假各位大侠Asp .net MVC EntityFramework 水平数据库拆分

问题描述 各位大侠,entityframework如何应对架构中有多个数据库水平拆分的情况比如user1在数据库A上,user2在数据库B上,user3在数据库C上感谢 解决方案 解决方案二:按什么规则去哪个数据库查跟策略有关,这不是ORM工具关心的事解决方案三:您看啊,Dbcontext与connectionStrings相连这个还配在webconfig里,那么根本没法动态增加数据库啊,是不是不灵活啊,请假大侠解决方案四:虽然在BLL层面你可以做这种拆分,但是下面你有很多查询的问题,这种架构也

asp.net-ASP.NET MVC 异步加载数据未完成,就不能超链接点击跳转

问题描述 ASP.NET MVC 异步加载数据未完成,就不能超链接点击跳转 页面内容是上面加载数据,下面是一些A标签(src=Url.Action("xx","xx"))跳转到各个视图! 现在问题是,我上面加载数据要好久,在加载未完成的时候,点击A标签无法跳转,加载完了,就可以! 目前试过: 1.通过Ajax加载数据, 2.通过iframe加载另外一个视图(此视图用来加载数据), 3.局部视图 4.1+2然后controller层的action方法采用下面的代码返回

ASP.NET MVC的运行机制

一.ASP.NET + MVC IIS与ASP.NET管道 MVC.MVP以及Model2[上篇] MVC.MVP以及Model2[下篇] ASP.NET MVC是如何运行的[1]: 建立在"伪"MVC框架上的Web应用 ASP.NET MVC是如何运行的[2]: URL路由 ASP.NET MVC是如何运行的[3]: Controller的激活 ASP.NET MVC是如何运行的[4]: Action的执行 二.URL 路由 ASP.NET的路由系统:URL与物理文件的分离 ASP.

How ASP.NET MVC Works?

一.ASP.NET + MVC IIS与ASP.NET管道 MVC.MVP以及Model2[上篇] MVC.MVP以及Model2[下篇] ASP.NET MVC是如何运行的[1]: 建立在"伪"MVC框架上的Web应用 ASP.NET MVC是如何运行的[2]: URL路由 ASP.NET MVC是如何运行的[3]: Controller的激活 ASP.NET MVC是如何运行的[4]: Action的执行 二.URL 路由 ASP.NET的路由系统:URL与物理文件的分离 ASP.

在ASP.NET MVC中如何使用异步控制器

在ASP.NET MVC中使用异步操作的时候,我有这么几个关注点.异步操作何时提高我应用的性能,什么时候没改善?     在ASP.NET MVC中到处使用异步操作真的好吗?    对于可等待的(awaitable)方法: 当查询数据库时(通过EF/BHibernate/其他的ORM)应该使用async/await关键字吗?    在一个单独的操作方法中,异步地查询数据库可以使用await关键字多少次? 当一个action必须执行多个独立的长期运行的操作时,异步action方法是很有用的. 假设