假设如下:
CREATE PROCEDURE [MySPROC]
AS
BEGIN
CREATE TABLE #tempSubset(
[MyPrimaryKey] [bigint] NOT NULL,
[OtherColumn] [int] NOT NULL)
INSERT INTO #tempSubset (MyPrimaryKey, OtherColumn)
SELECT SomePrimaryKey, SomeColumn
FROM SomeHugeTable
WHERE LimitingCondition = true
SELECT MyPrimaryKey, OtherColumn
FROM #tempSubset
WHERE SomeExpensiveCondition = true
END
Run Code Online (Sandbox Code Playgroud)
当我生成函数导入或映射返回类型时,EF不会生成复杂类型或告诉我:
选定的存储过程或函数不返回任何列
怎么克服这个?
其他答案建议使用表变量(由于性能原因不会这样做)伪造返回模式并注释掉实际存储过程,其他建议与视图类似 ...但必须有一种方法来做到这一点,而不必添加不必要的开销或要求我打破存储过程来更新模型?
是否可以在azure函数文件夹结构中包含web.config或app.config文件以允许程序集绑定重定向?
c# assembly-binding-redirect azure-functions visual-studio-2017 azure-functions-runtime
我有一个MVC 3应用程序,使用Windows身份验证和声明使用WIF 4.5.
通过AD组中的成员资格(当前)控制对应用程序的访问:
<deny users="?" />
<allow roles="domain\somegroup" />
<deny users="*" />
Run Code Online (Sandbox Code Playgroud)
除AD组外,我们还有需要添加的自定义角色.(此应用程序正在从Forms转换为Windows身份验证)
为了支持这些自定义角色(直到它们在AD中管理),我们将它们添加为ClaimTypes.GroupSid声明给用户,以便现有代码利用[Authorize("ADMIN")]并User.IsInRole("ADMIN")继续运行:
Application_PostAuthenticateRequest(object sender, EventArgs e)
{
var identity = ClaimsPrincipal.Current.Identity as WindowsIdentity;
var roles = userDAL.GetRoles(identity.Name);
foreach(var role in roles)
{
identity.AddClaim(new Claim(ClaimTypes.GroupSid, role));
}
}
Run Code Online (Sandbox Code Playgroud)
这一切都按预期工作.
除非当前用户不是某个自定义角色(如ADMIN)的成员,并且该角色在AD中也不存在
我们使用[Authorize("ADMIN")]Controller Action Methods,以及各种User.IsInRole("ADMIN")场景中的依赖实例.在那些发生错误并且应用程序爆炸的情况下.
AD基础架构正处于升级/迁移过程中.我不知道那里的所有细节,但我知道有一些域名,据说他们之间有信任,基础设施人员已经提到这些信任关系正在运行.
所以我想我想知道两件事:
这似乎不是我们的代码应该处理的东西.那么域名真的可能出现什么问题?我可以找出信任关系失败的"可信"域名吗?
解决这个问题的最佳方法是什么?我不喜欢编写辅助方法和Authorize()子类只是为了捕获这个异常.
我有一个MVC Web应用程序(WebAPI + Angular)部署到Azure作为Web应用程序(而不是API应用程序),设置为使用设置 - >身份验证/授权 - > AAD - > Express进行保护.这创建了一个与Web App同名的AD应用程序,并且作为普通的Web用户(在目录中,使用OAuth),它按预期工作.
但是我也有外部自动化需要直接调用WebAPI控制器,因此我需要以编程方式获取Bearer令牌以传递这些请求.
当"需要访问APP的用户分配"==否时,这一切都正常.但这还不够,因为目录中的每个人都不应该访问此应用程序.
翻转该开关会导致错误:
应用程序"AppId"未分配给应用程序"AppId"的角色.
正在使用的代码:
var aadLoginUri = "http://login.microsoftonline.com/{0}";
var tenantId = "[xxx].onmicrosoft.com";
var authority = String.Format(CultureInfo.InvariantCulture, aadLoginUri, tenantId);
var clientId = ConfigurationManager.AppSettings["ClientId"];
var clientSecret = ConfigurationManager.AppSettings["ClientSecret"];
var authContext = new AuthenticationContext(authority);
ClientCredential clientCredential = new ClientCredential(clientId, clientSecret);
AuthenticationResult authResult = authContext.AcquireToken(clientId, clientCredential);
Run Code Online (Sandbox Code Playgroud)
如何为应用程序添加角色分配?
(而不是用户)
我尝试使用"其他应用程序的权限"部分,但无法将应用程序添加到自身.为了查看这是否可以解决另一个应用程序的问题,我继续创建了一个,并且能够添加应用程序并将委托权限设置为"访问[应用程序名称]".但与以前一样,这仅适用于访问应用程序不需要用户分配的情况.然后AcquireToken()抛出相同的异常.
看起来这个问题可以通过将我们的API与Angular应用程序分离来解决,将API作为API应用程序(带有网关)托管,但目前这不是一个选项.此外,本文还说这个新的Auth功能" 替换了大多数应用程序的App Service网关 ",这篇博文在11月宣布该功能说" 我们建议网络和移动应用程序使用此功能而不是App Service网关 ",所以我想知道如果这还没有进入UI并且可能通过应用程序清单(尝试,失败),graph/service-mgmt api,powershell等添加应用程序角色分配.
如果 BrokeredMessage 的正文是 JSON 文本,是否可以使用该 JSON 中的属性过滤器设置主题订阅?
我正在使用Html.ActionLink(string linkText, string actionName, object routeValues)重载将一些参数发送到操作方法..
有时我需要传递一个空参数值,如: ?item1=&item2=value
我指定的匿名类型创建,并通过作为帕拉姆routeValues,但两者null并string.Empty导致URL省略了空item1PARAM。
new { item1 = null, item2 = "value" }
new { item1 = string.Empty, item2 = "value" }
new { item1 = "", item2 = "value" }
// all result in:
?item2=value
Run Code Online (Sandbox Code Playgroud)
我可以手动创建 URL,但我想使用辅助方法。
建议?
作为模板的一部分,我想要检索OMS/Operational Insights工作区的SharedKeys,而不是必须将其作为参数传递.
这可能吗?我在这里关注文档
Microsoft.OperationalInsights/workspaces/资源提供程序似乎没有任何list*提供程序操作,我找不到任何其他的引用:
Get-AzureRmProviderOperation -OperationSearchString * | where {$_.Operation -like "*operational*sharedkeys*"} | FT Operation
Microsoft.OperationalInsights/workspaces/sharedKeys/action
Run Code Online (Sandbox Code Playgroud)
我想要的用法:
"variables": { workspaceKey: "[listKeys(parameters('workspaceResourceId'), '2015-05-01-preview').primarySharedKey]" }
Run Code Online (Sandbox Code Playgroud)
在此期间,假设实际上不支持此功能,我在Log Analytics UserVoice站点上添加了对它的请求
json azure azure-resource-manager azure-automation azure-rm-template
创建链接后,将鼠标悬停在其上会显示红色(X)以将其删除.
单击此按钮将触发一系列事件(通过订阅"all"事件收集):
在浏览文档并花费太长时间深入研究这些事件的参数对象后,我发现没有什么可以用来有效地知道链接是否即将被删除.
当然我错过了一些明显的东西?
我可以比较指针向下和指针之间的图形链接集合,但这非常难看.
是否可以通过Microsoft.Azure.KeyVault软件包在KeyVault中创建密钥的新版本而无需创建密钥的新版本?我可以在Azure门户中执行此操作,但是需要能够以编程方式执行此操作。
azure ×4
c# ×3
actionlink ×1
asp.net-mvc ×1
isinrole ×1
javascript ×1
jointjs ×1
json ×1
parameters ×1
query-string ×1
razor ×1
temp-tables ×1
trust ×1