控制台和网络应用之间的行为差​​异

时间:2015-05-20 18:07:59

标签: c# .net web

我在Web API应用程序中有一段代码:

private Stream ConvertWorkBookToStream(WorkBook workBook)
{
    var tempFileName = Path.GetTempFileName();

    // The following line throws a NullReferenceException
    workBook.write(tempFileName);

   // Remainder elided for brevity
}

workBooktempFileName都不是null

一时兴起,我将应用程序池更改为在域管理员帐户下运行,以消除任何权限问题(因为我最近在我的计算机上发现了一些普遍的困难)并重新运行它。抛出了同样的例外。

然后我创建了一个控制台应用程序并将该方法逐字复制到应用程序中并运行它。 没有抛出异常。

现在,值得注意的是,就在昨天,我遇到了类似关于File.Exists的令人费解的行为。

考虑以下电话:

var exists = File.Exists(@"\\myshare\\myexistingfile.ext");

假设路径引用实际存在的文件:

  • 在网络应用下,exists会在我的计算机上返回false
  • 在控制台应用程序中,相同的操作将返回true

我的同事正在经历相反的行为。

任何人都能解释一下吗?我更喜欢我的智慧。

2 个答案:

答案 0 :(得分:2)

检查Path.GetTempFileName的返回是否与控制台应用程序和Web应用程序不同。 Windows可能会和你一起玩弄技巧。我有类似的问题试图写日志文件。我放弃了,把它们放在与我的网络服务相同的目录中。

答案 1 :(得分:0)

在IIS身份验证设置中,您是否只启用了匿名身份验证?如果我没记错,匿名身份验证会使用受限制的权限模拟IUSR帐户。