我试图从我的asp.net网站连接documentdb但我收到此错误。
系统中不存在具有指定ID的实体
DocumentClientException:系统中不存在具有指定标识的实体
代码如下的aspx代码
protected async void Page_Load(object sender, EventArgs e)
{
Response.Write("Page Load<br/>");
await GetData();
}
public async Task GetData()
{
try
{
Response.Write("<br/> Get Data function Start<br/><br/>");
using (var client = new DocumentClient(new Uri(ConfigurationManager.AppSettings["endpoint"]), ConfigurationManager.AppSettings["authKey"]))
{
//await client.OpenAsync();
RequestOptions reqOpt = new RequestOptions { PartitionKey = new PartitionKey(209) };
var parameters = new dynamic[] { 1 };
StoredProcedureResponse<object> result = await client.ExecuteStoredProcedureAsync<object>(
UriFactory.CreateStoredProcedureUri(ConfigurationManager.AppSettings["database"], ConfigurationManager.AppSettings["pcsd"], "GetMemberbyId"), reqOpt, parameters);
Response.Write(result.Response.ToString());
}
Response.Write("<br/><br/> Get Data function End");
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}
存储过程如下
function GetMemberbyId(memId) {
var collection = getContext().getCollection();
//return getContext().getResponse().setBody('no docs found');
// Query documents and take 1st item.
var isAccepted = collection.queryDocuments(
collection.getSelfLink(),
'SELECT * FROM root m where m.memberId='+memId,
function (err, feed, options) {
if (err) throw err;
// Check the feed and if empty, set the body to 'no docs found',
// else take 1st element from feed
if (!feed || !feed.length) getContext().getResponse().setBody('no docs found');
else getContext().getResponse().setBody(feed);
});
if (!isAccepted) throw new Error('The query was not accepted by the server.');
}
在我的localhost中工作正常,但网站发布到azure web应用程序并运行我遇到上述错误
答案 0 :(得分:14)
我只花了几个小时对此进行故障排除,但却发现我已经将我的实例防火墙到了我无法在本地连接的地方。请记住,即使您没有通过API / C#客户端直接访问,Azure门户文档查询显然仍然有效。
尝试将防火墙设置为允许所有网络临时检查访问权限。
答案 1 :(得分:0)
我会在门户网站上查看&#34; GetMemberbyId&#34;是您尝试运行它的集合的存储过程的名称。可能是存储过程在不同的集合上,或者存储过程是以其他方式命名的。
如果全部检查出来..我有更多运气用__。filter()方法查询服务器上的文件。看到: http://azure.github.io/azure-documentdb-js-server/