【发布时间】:2020-09-17 22:56:05
【问题描述】:
我的申请有问题。这是一个在 IIS 10 上设置的 ASP.NET 应用程序。
假设一个系统页面可供 20 个用户访问。该页面完美运行(编码没有逻辑错误)每个操作都有效并提供用户请求的预期值。
问题是,每当有人同时请求与另一个用户相同的方法(具有不同的值)时,应用程序会随机向其中一个用户抛出错误。我们检查了日志错误,所有这些都是系统索引超出范围的错误,这在我们的 QA 服务器中从未发生过。
我随机考虑测试那个确切的场景(同时与另一个用户添加不同的值),我第一次在 QA 服务器上看到它发生。我们已经设法多次重现该错误。
虽然我们不排除这可能是另一个问题的可能性,但还有其他人遇到过类似的情况吗?
问题是:IIS 能否毫无问题地管理相同的请求,在同一个实例中同时多次?它是在多个线程上运行的还是类似的?
感谢您花时间回答这个问题,如果您需要任何信息
【问题讨论】:
-
是的,IIS 可以很好地处理它。如果它不能,就不会成为一个 Web 服务器。听起来您的网络应用程序中存在错误。
-
此类异常通常是由于开发人员没有将多线程考虑在内的编写不当的代码造成的。例如,
System.Collections.Generics中的类不是线程安全的,因此添加/删除操作需要适当的锁定。 -
如果您发布一个问题,其中包含重现错误的代码段,那么这里有很多内容可以提供帮助。但是,我同意@lexLi 的观点,即您使用的是跨线程共享的集合,该集合不是线程安全的。也许您在 Global.asax 中创建它并使用它。您需要查看docs.microsoft.com/en-us/dotnet/standard/collections/…
标签: asp.net request instance iis-10