小编mae*_*lin的帖子

ASP.NET CORE,Web API:没有路由匹配提供的值

我在asp.net core(web api)中的路由有一些问题.

我有这个控制器(简化):

[ApiVersion("1.0")]
[Route("api/v{version:apiVersion}/[Controller]")]
public class DocumentController : Controller
{

[HttpGet("{guid}", Name = "GetDocument")]
public IActionResult GetByGuid(string guid)
{
    var doc = DocumentDataProvider.Find(guid);
    if (doc == null)
        return NotFound();

    return new ObjectResult(doc) {StatusCode = 200};
}


[HttpPost]
public IActionResult Create([FromBody] Document doc)
{
    //... Creating Doc

    //Does not work   
    //var val = CreatedAtRoute("GetDocument", new {guid = doc.Guid.ToString("N")}, document);
    //or this: CreatedAtRoute("GetDocument", new { controller = "Document", guid = doc.Guid.ToString("N")}, document);

    var val = CreatedAtRoute("GetDocument", new { version = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc-routing .net-core api-versioning asp.net-core-webapi

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

检测adaljs-angular4中是否可以使用silentlogin

我正在角色6项目中使用库adal-angular4@3.0.13.我尝试做以下事情:

  1. 如果可以使用office365进行silentlogin(登录而不提示用户输入凭据),则执行silentlogin(使用 _adalService.login()

  2. 如果无法使用silentlogin,则在欢迎屏幕中显示"登录"按钮.

当我通过azure-ad/o365身份验证并且cookie仍然有效时,可以使用silentlogin.

要找出,如果可以使用silentlogin,我尝试了以下内容:

try {
  let token = await this._adal.acquireToken(this._config.clientId).toPromise();
  return true;
} catch (e) {
  console.log('acquireToken error', e);
  return false;
}
Run Code Online (Sandbox Code Playgroud)

但它总会回归:

用户登录是必需的

但是当_adalService.login()它调用它时会做一个无声的登录.

我的问题: 我怎样才能发现,如果adaljs可以在没有提示输入凭据的情况下登录(应该可以,例如从o365-cookie中读取)?

typescript azure-active-directory adal.js angular microsoft-adal-angular6

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

Convert.ToString返回string.empty而不是null

我发现了Convert.ToString的一个奇怪的行为,我想了解,为什么它的行为是这样的.

看看下面的代码片段:

string obj = null;
var str = Convert.ToString(obj);
Console.WriteLine(str); // CORRECT: returns null;
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好,但是:

DBNull obj = DBNull.Value;
var str = Convert.ToString(obj);
Console.WriteLine(str); // ???: returns string.Empty ("")
Run Code Online (Sandbox Code Playgroud)

object obj = null;
var str = Convert.ToString(obj);
Console.WriteLine(str); // ???: returns string.Empty ("")
Run Code Online (Sandbox Code Playgroud)

它看起来像一个bug,因为当我转换为字符串并且输入为NULL时,结果应该是字符串的默认值,也是NULL.

c# string type-conversion

4
推荐指数
2
解决办法
589
查看次数