c# - 这个 ASP.NET 顾问知道他在做什么吗?

标签 c# asp.net exception session-variables

我们子公司的 IT 部门让一家咨询公司为他们编写了一个 ASP.NET 应用程序。现在,它会间歇性地混淆当前用户是谁,并且会错误地向 Joe 显示 Bob 的一些数据。

顾问被召回进行故障排除,我们被邀请聆听他们的解释。有两件事很突出。

首先,顾问领导提供了这个伪代码:

void MyFunction()
{
    Session["UserID"] = SomeProprietarySessionManagementLookup();
    Response.Redirect("SomeOtherPage.aspx");
}

他接着说session变量的赋值是异步的,这好像不对。允许对查找函数的调用可以异步执行某些操作,但这似乎不明智。

鉴于所谓的异步性,他的理论是在重定向不可避免的 ThreadAbort 异常出现之前, session 变量没有被分配。然后,此错误阻止了 SomeOtherPage 显示正确的用户数据。

其次,他举例说明了他推荐的编码最佳实践。而不是写:

int MyFunction(int x, int x)
{
    try 
    {
        return x / y; 
    }
    catch(Exception ex)
    {
        // log it
        throw;
    }
}

他推荐的技术是:

  int MyFunction(int x, int y, out bool isSuccessful)
  {
    isSuccessful = false;

    if (y == 0)
        return 0;

    isSuccessful = true;

    return x / y;
  }

这肯定会起作用,并且在某些情况下从性能的角度来看可能会更好。

但是,从这些和其他讨论点来看,我们觉得这个团队在技术上并不精通。

意见?

最佳答案

经验法则:如果您需要询问顾问是否知道他在做什么,他可能不知道 ;)

我倾向于同意这一点。显然你没有提供太多,但他们似乎并不十分胜任。

关于c# - 这个 ASP.NET 顾问知道他在做什么吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/164468/

相关文章:

c# - 下载 PDF 后重定向页面

c++ - 为什么不能在 dtor 中使用 uncaught_exception?

c# - 如何在我的 MSTest 单元测试中检查 "no exception occurred"?

c# - 重复的 AssemblyVersion 属性

c# - 关于找到解决此问题的标准制表方法的任何建议

asp.net - NodaTime 转换(第 2 部分)。如何?

asp.net - 使用 NLog 记录当前页面 url

c# - PUT方法可以插入、删除。那么为什么我们必须使用 POST 方法而不是 PUT/DELETE/GET 方法

exception - 仅 LINQ to Entities 中的排序输入支持方法 'Skip'。方法 'OrderBy' 必须在方法 'Skip' 之前调用

c# - 能够在用户尝试关闭 Windows 窗体而不保存时通知用户请求 'Save Changes'