我有3个字符串字段Country,Province,City的对象.它们可以包含null或一些字符串名称.
我想用完全相同的值查询所有数据.
例如,我需要所有数据
City = null,
Province = "WA",
Country = "USA"
Run Code Online (Sandbox Code Playgroud)
我创建了BsonDocument:
var lookup = new QueryDocument
{
{"GeoPosition.City", userLocation.City},
{"GeoPosition.Province", userLocation.Province},
{"GeoPosition.Country", userLocation.Country}
};
Run Code Online (Sandbox Code Playgroud)
但是null字段被丢弃了,文档看起来像:
{
"GeoPosition.Province" : "WA",
"GeoPosition.Country" : "USA"
}
Run Code Online (Sandbox Code Playgroud)
如果我正在使用
Query.EQ("GeoPosition.City", userLocation.City)
Run Code Online (Sandbox Code Playgroud)
我有例外说参数不能为空.
正如我在文档中看到的那样,如果value等于null,则构建查询检查没有问题.所以这是C#驱动程序的问题.任何想法如何解决这个问题?
我们正在使用基本身份验证的Web服务.这一切都很好,直到Web服务的所有者实现了平衡服务.这只是将请求重定向到不同的Web服务实例.
问题是重定向后基本身份验证失败.有"请求身份验证凭据未通过"异常.
附加信息:
我们必须手动创建请求.
var req = (HttpWebRequest)WebRequest.CreateDefault(new Uri(Settings.Default.HpsmServiceAddress));
req.Headers.Add("Authorization", "Basic aaaaaaaaaaa");
req.PreAuthenticate = true;
req.AuthenticationLevel = AuthenticationLevel.MutualAuthRequested;
req.UserAgent = "Apache-HttpClient/4.1.1 (java 1.5)";
req.KeepAlive = false;
ServicePointManager.Expect100Continue = false;
req.ContentType = "text/xml; charset=utf-8";
req.Method = "POST";
req.Accept = "gzip,deflate";
req.Headers.Add("SOAPAction", actionName);
byte[] buffer = Encoding.UTF8.GetBytes(envelop);
Stream stm = req.GetRequestStream();
stm.Write(buffer, 0, buffer.Length);
stm.Close();
WebResponse response = req.GetResponse();
string strResponse = new StreamReader(response.GetResponseStream()).ReadToEnd();
response.Dispose();
Run Code Online (Sandbox Code Playgroud)我们通过HTTP 307重定向重定向