我正在尝试使用Microsoft Graph API查询Outlook/O365邮箱中的邮件.我在Azure门户中注册了我的应用程序,并收到了查询API的必要信息.该应用已获得Mail.Read许可.(我无权访问Azure门户,我被告知它是以这种方式设置的.)但是,当我从OAuth端点获取令牌时,它在任何后续调用中都不起作用.我正在使用Python的请求模块进行测试.
为什么这个电话失败了?好像我传递了所有正确的信息,但我显然遗漏了一些东西.
我通过执行POSTon 获取令牌:
https://login.microsoftonline.com/my.domain/oauth2/token
Run Code Online (Sandbox Code Playgroud)
我传递了必要的参数:
data = {'grant_type': 'client_credentials', 'client_id': CLIENTID, 'client_secret': SECRET, 'resource': APPURI}
Run Code Online (Sandbox Code Playgroud)
我收到这样的回复:
{
'resource': 'APPURI',
'expires_in': '3599',
'ext_expires_in': '3600',
'access_token': 'TOKENHERE',
'expires_on': '1466179206',
'not_before': '1466175306',
'token_type': 'Bearer'
}
Run Code Online (Sandbox Code Playgroud)
但是,我尝试使用该令牌,但它对我所称的任何内容都不起作用.我将它作为标题传递:
h = {'Authorization': 'Bearer ' + TOKEN}
Run Code Online (Sandbox Code Playgroud)
我正在调用此网址:
url = 'https://graph.microsoft.com/v1.0/users/my.email.address@example.com/messages'
Run Code Online (Sandbox Code Playgroud)
具体来说,我用这个:
r = requests.get(url, headers=h)
Run Code Online (Sandbox Code Playgroud)
回复是401:
{
'error': {
'innerError': {
'date': '2016-06-17T15:06:30',
'request-id': '[I assume this should be removed for privacy]'
},
'code': 'InvalidAuthenticationToken',
'message': 'Access …Run Code Online (Sandbox Code Playgroud) 我使用的是 Apache 2.4.12,所以SSLCertificateChainFile现在已过时,任何中间证书都应该包含在服务器证书文件中。比其他证书的任意组合-我想不出但如何做到这一点,只是里面指定的文件会导致无效键错误的站点证书。如何在我使用SSLCertificateFile指定的文件中正确包含中间证书?
我正在.NET Core 1.1中构建一个API.我在基本控制器中构建了一个自定义User对象HttpContext.User,我的所有其他控制器都是从该控制器继承的,并且我默认启用了身份验证(必须[AllowAnonymous]在必要时手动禁用).该User对象具有IsAdmin属性.现在我正在检查用户是否是每个相关功能顶部的管理员,如下所示,但我觉得必须有一种方法来添加自定义属性来简化和清理此代码.
供参考,User.IsAdmin是这方面的简写:
bool.Parse(HttpContext.User.FindFirst("IsAdmin")?.Value)
Run Code Online (Sandbox Code Playgroud)
而不是这个:
[HttpGet]
public async Task<IActionResult> Get()
{
if (!User.IsAdmin)
return Forbid();
// logic
}
Run Code Online (Sandbox Code Playgroud)
我喜欢这个(或类似的东西):
[AdminOnly]
[HttpGet]
public async Task<IActionResult> Get()
{
// logic
}
Run Code Online (Sandbox Code Playgroud)
我试着查看源代码[AuthorizeAttribute]来尝试构建,但它只是一个shell而且我不知道真正的魔法在哪里发生.
我怎么能做到这一点?
我正在尝试安装仅在Visual Studio 2017上支持的扩展.我使用的是Professional,我从未安装过RC,只有RTM版本.但是,未检测到VS 2017(请参阅下面的安装日志).其他扩展安装得很好,大概是因为它们也支持VS 2015,我确实安装了它.这些扩展确实出现在2015年和2017年.
我尝试了修复安装,然后完全卸载并重新安装,但没有解决问题.具体的扩展是Roslynator 2017.
我如何解决这个问题,以便检测到VS 2017,我可以为它安装扩展程序?
安装日志:
3/15/2017 2:21:53 PM - Microsoft VSIX Installer
3/15/2017 2:21:53 PM - -------------------------------------------
3/15/2017 2:21:53 PM - Initializing Install...
3/15/2017 2:21:54 PM - Extension Details...
3/15/2017 2:21:54 PM - Identifier : 9289a8ab-1bb6-496b-9992-9f7ea27f66a8
3/15/2017 2:21:54 PM - Name : Roslynator 2017
3/15/2017 2:21:54 PM - Author : Josef Pihrt
3/15/2017 2:21:54 PM - Version : 1.2.51
3/15/2017 2:21:54 PM - Description : A collection of 170+ analyzers and 170+ refactorings …Run Code Online (Sandbox Code Playgroud) 我将下面的规则添加到现有的jQuery Validate脚本中extension,但是这个片段导致它破坏而根本不验证.我之前和之后尝试了所有可能的逗号组合,我也尝试过使用acceptmimetypes 的方法,但到目前为止还没有任何工作.如果我注释掉这个片段(以及它之前的行上的注释),代码可以正常工作,但添加它会导致它中断.
这是一个jsFiddle代码按原样(不起作用),这里有一个完全相同的代码,除了代码片段被注释掉(工作正常).
代码片段本身:
form1upload: {
extension: "jpg|jpeg|pdf|doc|docx|png"
}
Run Code Online (Sandbox Code Playgroud)
完整代码:
jQuery(document).ready(function() {
jQuery("#grantapp").validate({
errorClass:"errorlabels",
rules: {
form1name: "required",
form1building: "required",
form1position: "required",
form1phonex: "required",
form1besttime: "required",
form1projtitle: "required",
form1benefit: "required",
form1timeframe: "required",
form1relevance: "required",
form1description: "required",
form1amount: "required",
form1acceptchk: "required",
form1upload: {
extension: "jpg|jpeg|pdf|doc|docx|png"
}
},
messages: {
form1name: "You must enter your name.",
form1building: "You must enter your building.",
form1position: "You must enter your position.",
form1phonex: "You must enter your phone …Run Code Online (Sandbox Code Playgroud) 我在新计算机上安装了Visual Studio 2015的新副本以及SSDT 12月预览版.报表服务器是SQL Server 2008 R2.我可以成功查看和构建我的报告,没有问题,但对于大约一半的报告,我收到以下警告消息:
Custom parameter layout was removed from the report. /
SQL Server 2014 Reporting Services and earlier do not support custom parameter layout.
Run Code Online (Sandbox Code Playgroud)
每次清理/重建时都会显示该消息,因此某些内容不会像VS声明那样永久更改.我甚至不知道自定义参数布局是什么,所以我很确定我不需要担心这个.如何禁用警告消息或修复它抱怨的问题?
我在VS 2015 Update 3,Windows 10,.NET Core 1.0中.当我在我的解决方案中构建项目时,我收到标题中的消息:
(编译时间可以改进.运行"dotnet build --build-profile"获取更多信息)
但是,当我在任何项目中运行时,我得到了这个:
项目MyProj.Web(.NETCoreApp,Version = v1.0)之前已编译过.跳过编译.
如果我清理解决方案并删除所有bin和obj文件夹,那么该命令会像正常一样构建项目,而不会因--build-profile标志而打印出额外的信息.在仍然打印消息后,在Visual Studio中构建.
我应该做些什么来纠正这个问题?
编辑: 已在 GitHub 上打开了一个问题,以使用答案中的信息澄清文档。
我正在尝试在我的 .NET Core MVC 应用程序中设置路由(用于 API)。我相信我已经正确配置了所有内容,但除非该操作明确设置了路由属性,否则没有路由工作(全部返回 404)。这里提到了同样的问题,但他不知道是什么解决了这个问题。
我把属性放回去,它起作用了。我删除了它们,它没有。最终通过删除和重新添加路由配置的一些神奇咒语 - 换句话说,将其关闭并重新打开 -
UseMvcWithDefaultRoute()在没有路由属性的情况下工作。不知道那里发生了什么。
这是我所拥有的简化版本。有什么问题?为什么在没有设置属性的情况下路由不能工作?
在这个例子中,我试图POST将/login/register.
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
})
.AddJsonOptions(options =>
options.SerializerSettings.ContractResolver =
new CamelCasePropertyNamesContractResolver());
public void Configure(IApplicationBuilder app,
IHostingEnvironment env,
ILoggerFactory loggerFactory)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseMvcWithDefaultRoute();
}
Run Code Online (Sandbox Code Playgroud)
我还尝试手动指定路线:
app.UseMvc(routes =>
{ …Run Code Online (Sandbox Code Playgroud) 我在.NET Core 1.1.0,EF Core 1.1.0,VS 2015上.
我正在编写一个帖子/评论系统,我需要一个函数来加载评论及其所有子项及其相关属性.这是我的课程的简化版本:
public class Comment
{
public long Id { get; set; }
public string Content { get; set; }
public User User { get; set; }
public ICollection<Comment> Replies { get; set; }
}
public class User
{
public long Id { get; set; }
public string Name { get; set; }
public Avatar Avatar { get; set; }
}
public class Avatar
{
public string Url { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
任何给定的评论都可以有任意数量的回复:
-PARENT …Run Code Online (Sandbox Code Playgroud) 我被要求为我选择的高级OO语言编写API(我将使用Java).当然,API需要执行特定的功能,但它们是我知道我可以完成的非常基本的事情.
我熟悉Web应用程序的API概念,这很简单,但是为OO语言编写API究竟意味着什么?在Java的情况下,这是否意味着编写一个可以导入的包并通过类/函数提供所需的功能,所以我会写a)包和b)一个单独的模块来测试它?(为了澄清,除了"编写API"和"它需要做X,Y和Z"之外,我没有提供任何信息.进一步澄清:我提到了Web应用程序API概念,只是为了表明我知道什么是API是.这不是任何类型的Web API.)