我创建了简单的.NET Web服务(ASMX),我从我的.NET Web应用程序调用。 服务和Web应用程序都使用Windows Authetication。
com.mydomain.MyWebService webSrvc = new com.mydomain.MyWebService();
string output = webSrvc.MyServiceMethod();
我现在创建与C#Windows应用程序,并想从那里调用相同的Web服务。 我已经加入在我的项目到服务的Web引用,我可以到服务的Web方法没有问题的电话。 问题是,在网络里面的方法,我试图检索用户的Windows用户名。
string username = User.Identity.Name; //always blank
这工作,当我从我的web应用程序调用Web服务,但是当我把它从我的Windows应用程序,它总是返回空白,User.Identity.IsAuthenticated始终是假的,如果是相关的。 缺少什么我在这里。 我只需要得到运行控制台应用程序,调用Web服务的Windows用户的用户名。 我曾尝试webSrvc的凭据设置为默认ClientCache凭据,但这并不解决问题。
更新:我不知道这是否是有用的,但我知道,如果我用Environment.UserName,它将给“NETWORK_SERVICE”,然后如果我启用模拟,它会给“IUSR_ [HOST_NAME]”。 好像我只是失去了一些东西真的很简单。 我只是想获得当前的Windows用户,谁是运行Windows应用程序(它调用Web服务)。