C# 如何知道我的.NET应用程序正在web服务器上运行的用户?

C# 如何知道我的.NET应用程序正在web服务器上运行的用户?,c#,.net,iis,web-applications,web,C#,.net,Iis,Web Applications,Web,我们正在开发一个小型社交网络web应用程序。它必须从另一个web应用程序获取一些数据。更糟糕的是,当我们在开发人员机器上运行代码时,一切都很好,我们得到了JSON数据。但是当相同的应用程序部署在web服务器上时,我们会得到一个错误 基础连接已关闭:接收时发生意外错误 请注意:我们的登录模式是Windows身份验证: <authentication mode="Windows"> </authentication> 可能需要一些尝试和错误,但在Visual Studio中

我们正在开发一个小型社交网络web应用程序。它必须从另一个web应用程序获取一些数据。更糟糕的是,当我们在开发人员机器上运行代码时,一切都很好,我们得到了JSON数据。但是当相同的应用程序部署在web服务器上时,我们会得到一个错误

基础连接已关闭:接收时发生意外错误

请注意:我们的登录模式是Windows身份验证:

<authentication mode="Windows">
</authentication>

可能需要一些尝试和错误,但在Visual Studio中,如果打开菜单“调试”->“附加到进程”,然后在“限定符”框中选择您的Web服务器,您应该会看到所有正在运行的进程的列表以及信息,如用户名和密码


如果您知道PID或手动查找应用程序的进程,您应该能够确定正在使用哪个用户名。

听起来更像是网络问题。可能您的防火墙正在阻止传入流量。IIS应用程序池可以作为用户运行。默认标识是NETWORKSERVICE,它可能没有访问您尝试使用的资源的权限。通常,NETWORKSERVICE是运行web服务器的计算机上的用户帐户,因此在域中没有实际标识。作为一种解决方案,您可以更改AppPool运行时所使用的标识。另一个解决方案是允许匿名请求IIS7上的JSON应用程序,即ApplicationPoolIdentity。您可以使用模拟以所选用户的身份运行选定的代码段。感谢Maurice Reeves,您的方法是正确的。现在,我们从“NetworkService”更改为“LocalSystem”,并且所有已启动的Working.LocalSystem都是一个高权限帐户-它包括一个内置/administrators组的令牌。你不应该这样运行你的服务,因为它会增加攻击者的伤害。