DocumentDB / CosmosDB - Entity with the specified id does not exist in the system

无人久伴 提交于 2019-12-10 15:17:53

问题


i tried to connect documentdb from my asp.net website but i am getting this error.

Entity with the specified id does not exist in the system

DocumentClientException: Entity with the specified id does not exist in the system

code as follows in aspx code behind

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);
    }
}

stored procedure as follows

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.');
}

in my localhost it's working fine but website published to azure web apps and running i am getting above error


回答1:


I just spent a couple of hours troubleshooting this, only to find that I had firewalled my instance to a point where I could not connect locally. Keep in mind that the Azure portal document query will obviously still work even when you have no direct access via the API / C# client.

Try setting the firewall to allow All Networks temporarily to check access.




回答2:


I would check in the portal that the "GetMemberbyId" is the name of the stored procedure for the collection you are trying to run it on. Could be the stored procedure is on a different collection or that the stored procedure is named something else.

If that all checks out.. I have had more luck with the __.filter() way of querying documents on the server. See: http://azure.github.io/azure-documentdb-js-server/



来源:https://stackoverflow.com/questions/43723470/documentdb-cosmosdb-entity-with-the-specified-id-does-not-exist-in-the-syste

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!