Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
httpclient c#couchdb未经授权创建数据库_C#_Couchdb - Fatal编程技术网

httpclient c#couchdb未经授权创建数据库

httpclient c#couchdb未经授权创建数据库,c#,couchdb,C#,Couchdb,我有下面的代码在couchDB中创建数据库的代码: private async void DatabaseCreate() { if (!await DatabaseExist()) { var contents = new StringContent("", Encoding.UTF8, "text/plain"); this.uri = "http://USER:

我有下面的代码在couchDB中创建数据库的代码:

private async void DatabaseCreate()
        {
            if (!await DatabaseExist())
            {
                var contents = new StringContent("", Encoding.UTF8, "text/plain"); 
                this.uri = "http://USER:PASSWORD@localhost:5984/item_sn";
                var response = await client.PutAsync(this.uri, contents); //set the contents to null but same response.
                Console.WriteLine(response.Content.ReadAsStrifngAsync().Result); 
            }
        }
我的问题是,它给了我一个状态码为401的回复,表示“未经授权”。我尝试了卷曲在终端中旋转它,它给了我一个成功的响应。是否需要为httpclient设置一些先决条件?还是我用错了方法。我知道couchDB有一些第三方软件包,但就我而言,我只想使用C#的httpclient

提前谢谢

curl命令:

curl -X PUT http://USER:PASSWORD@localhost:5984/item_sn

看起来在HttpClient类中,您可以将凭据包含在其中。看看这个。试试看,也许那会管用。

以下是有效的代码

public async void DatabaseCreate()
            {
                if (!await DatabaseExist())
                {
                    var contents = new StringContent("", Encoding.UTF8, "text/plain");
                    var byteArray = Encoding.ASCII.GetBytes("user:pass");
                    client.DefaultRequestHeaders.Add("Authorization", "Basic " + Convert.ToBase64String(byteArray));
                    this.uri = "http://localhost:5984/databasename";
                    var response = await client.PutAsync(this.uri, contents);
                    Console.WriteLine(response.Content.ReadAsStringAsync().Result); 
                }
            }

你能提供你的
curl
命令吗?将我的curl命令添加到原始帖子中。干杯。如果您执行
GetAsync(“http://localhost:5984/“”
操作,您会收到CouchDB欢迎信息吗?欢迎消息应该是这样的:
{“couchdb”:“欢迎”,“版本”:“2.1.1”,“功能”:[“调度程序”],“供应商”:{“名称”:“Apache软件基金会”}}
是。GetAsync(uri)给了我couchdb一个受欢迎的响应。只需补充一点,在现有数据库中使用PutAsync(uri,contents)和PostAsync(uri,contents)操作添加/修改文档没有问题。我的问题只是在couchdb上创建新数据库时。CouchDB版本是2.1.1,如果有帮助的话。您的用户名/密码是CouchDB级别还是数据库级别?
var byteArray=Encoding.ASCII.GetBytes(“用户:通过”);client.DefaultRequestHeaders.Add(“Authorization”,“Basic”+Convert.ToBase64String(byteArray))发送请求前添加代码行有效。谢谢你的指导,伙计。谢谢。干杯