这是一个奇怪的问题。我将字符串传递给我的服务,该字符串将是登录我网站的人的用户名(通过Windows授权)。我使用
从我的网站上获取字符串 HttpContext.User.Identity.Name.ToString()
我从域中解析它并获得用户身份。然后我打电话给wcf服务,其合同与此类似......
generalWCFContractImplementation(string userID);
现在,你会认为它会传递我发送它的字符串......然而,情况确实不是这样。在做了一些调试之后,我发现传入的字符串是我用来设置WCF连接的userPrincipleName!现在为什么它会这样做呢?我正在检查我的代码中的所有内容,看看是否以某种方式意外更改了userID,但是我在输入函数后立即检查ID的值是什么,并且它是userPrincipleName!我对这里发生的事情感到非常困惑。有没有人知道为什么会这样?我该如何解决这个问题?
感谢。
使用代码更新
public string GetOwnedPopulations(string userID)
{
Log.TraceEvent(System.Diagnostics.TraceEventType.Information, string.Format("Entered Method GetOwnedPopulations() CallerNameOnly: {0}, userID: {1} CallerNameOnly==userID {2}", CallerNameOnly, userID, CallerNameOnly == userID), "General");
this.CallerFullDomain = userID;
this.CallerNameOnly = userID;// this.CallerFullDomain.Substring(this.CallerFullDomain.IndexOf('\\') + 1);
string ans;
Log.TraceEvent(System.Diagnostics.TraceEventType.Information, string.Format("Entered Method GetOwnedPopulations() CallerNameOnly: {0}, userID: {1} CallerNameOnly==userID {2}", CallerNameOnly , userID, CallerNameOnly==userID), "General");
searchPopulationbyOwner oReq = new searchPopulationbyOwner();
oReq.ownerName = this.CallerNameOnly;
try
{
StringBuilder sbBuffer = new StringBuilder();
PopulationManagementClient client = UPMC.ISD.EADIS.PopulationManagement.PopManSvc.Utils.GetClient(this.CallerNameOnly);
searchPopulationbyOwnerResponse resp = client.searchPopulationbyOwner(oReq);
Log.TraceEvent(System.Diagnostics.TraceEventType.Information, string.Format("Getting Null Values?: {0}", (resp == null ? ans="yes" : ans="no")), "General");
XmlSerializer xs = new XmlSerializer(typeof(Population[]));
System.IO.StringWriter sw = new System.IO.StringWriter(sbBuffer);
xs.Serialize(sw, resp.populationList);
string sPopulationtXML = sbBuffer.ToString();
return sPopulationtXML;// client.searchPopulationbyOwner(oReq);
}
catch
{
throw;
}
}
如您所见,我传入用户名,然后我将要传递的对象设置为等于用户ID。问题是,userID是applicationPoolID,但我猜它更可能是userPrincipleName(它恰好与applicationPoolIdentity相同......我不确定它们是否必须相同或不相同)。但这很奇怪。我知道为什么在地球上会传入而不是实际的用户名...是的,我查看了我的网站以查看传入的内容,确实是用户ID ...当它点击时但是,该服务是userPrincipleName。
困惑?????