小编ind*_*rad的帖子

如何使用System.Net.HttpClient发布复杂类型?

我有一个自定义复杂类型,我想使用Web API.

public class Widget
{
    public int ID { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我的Web API控制器方法.我想像这样发布这个对象:

public class TestController : ApiController
{
    // POST /api/test
    public HttpResponseMessage<Widget> Post(Widget widget)
    {
        widget.ID = 1; // hardcoded for now. TODO: Save to db and return newly created ID

        var response = new HttpResponseMessage<Widget>(widget, HttpStatusCode.Created);
        response.Headers.Location = new Uri(Request.RequestUri, "/api/test/" + widget.ID.ToString());
        return response;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我想使用System.Net.HttpClient来调用该方法.但是,我不确定要传递给PostAsync方法的对象类型以及如何构造它.这是一些示例客户端代码.

var client …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api

101
推荐指数
3
解决办法
20万
查看次数

RavenDB - 可选的where子句

我想编写一个RavenDB查询,如果它可用,则按值过滤,但如果该值不可用,我希望它返回所有对象.例如,在linq到对象中,我可以这样做:

var matches = people.Where(x => x.LastName == userEntry || userEntry == string.Empty).ToList();
Run Code Online (Sandbox Code Playgroud)

但以下方法不起作用:

var matches = RavenSession.Query<Person>().Where(x => x.LastName == userEntry || userEntry == string.Empty).ToList();
Run Code Online (Sandbox Code Playgroud)

因为userEntry它不是索引值,所以会引发异常.

我怎么能做到这一点?

c# ravendb

8
推荐指数
1
解决办法
795
查看次数

我可以关闭 Azure AD RedirectURI 的区分大小写功能吗

我的重定向 URI 配置如下:

\n\n
https://<url>/RALauncher/signin-oidc\n
Run Code Online (Sandbox Code Playgroud)\n\n

但如果我去这里:

\n\n
https://<url>/ralauncher\n
Run Code Online (Sandbox Code Playgroud)\n\n

并登录,我收到此错误消息:

\n\n
\n

抱歉,我们\xe2\x80\x99 在让您登录时遇到问题。

\n\n

AADSTS50011: 请求中指定的回复 URL 与为应用程序配置的回复 URL 不匹配:\n“<guid>”。更多详细信息:由于区分大小写,回复地址\n 不匹配。

\n
\n\n

是否可以配置此以使重定向 URI 不区分大小写?我在 Azure 门户中找不到此设置。

\n

azure-active-directory

5
推荐指数
1
解决办法
3076
查看次数

Azure Devops 指定的登录会话不存在

我们使用 Azure Devops 作为 git 存储库,之前我们经常遇到一个问题,即我们会收到“终端提示已禁用”错误。当我们升级到 Visual Studio (2019) 版本 16.8.1 时,这个问题就消失了,一切看起来都很好。然而,在这个版本大约两周后,我和我们的其他一些开发人员现在收到了这个错误:

Failed to push to the remote repository. See the Output window for more details.
Updating 7df912b..b4954c1
Git failed with a fatal error.
Failed to write item to store. [0x520]
A specified logon session does not exist. It may already have been terminated
POST git-upload-pack (909 bytes)
remote: Azure Repos        
remote: 
remote: Found 12 objects to send. (9 ms)        
From https://dev.azure.com/myOrg/_git/myApp
   7df971b..b4958c1  master     -> origin/master
Run Code Online (Sandbox Code Playgroud)

有时它也会说失败并检查输出窗口。当我去检查错误时,它会在输出窗口本身中显示“检查输出窗口”,而没有进一步的错误消息。我尝试清除 AppData 中的 git …

git azure azure-devops visual-studio-2019

5
推荐指数
2
解决办法
4495
查看次数

PUT 请求导致 400 Bad Request

我正在尝试使用 HttpClient 对 Web API 方法发出 PUT 请求。几乎相同的 POST 请求按预期工作,但 PUT 请求会导致 400(错误请求)错误。我不确定我做错了什么。

这是我的 Web API 控制器代码:

public HttpResponseMessage Post(object val)
{
    Debug.WriteLine(val.ToString());
    return new HttpResponseMessage(HttpStatusCode.OK);
}

public HttpResponseMessage Put(int id, object val)
{
    Debug.WriteLine(id.ToString(), val.ToString());
    return new HttpResponseMessage(HttpStatusCode.OK);
}
Run Code Online (Sandbox Code Playgroud)

这是尝试调用这些方法的客户端代码。POST 请求如下所示:

var client = new HttpClient();
var content = log.ToJsonContent();
var address = new Uri(_webApiBaseAddress + "logs");

client.PostAsync(address, content).ContinueWith(requestTask =>
    {
        requestTask.Result.EnsureSuccessStatusCode();
    });
Run Code Online (Sandbox Code Playgroud)

不起作用的 PUT 请求如下所示:

var client = new HttpClient();
var content = log.ToJsonContent();
var address = new …
Run Code Online (Sandbox Code Playgroud)

c# restsharp http-status-code-400 asp.net-web-api dotnet-httpclient

3
推荐指数
1
解决办法
1万
查看次数