小编Chr*_*uer的帖子

授权具有多个角色的属性

我想将Authorization添加到控制器,同时为多个角色添加.

通常情况如下:

[Authorize(Roles = "RoleA,RoleB,RoleC")]
public async Task<ActionResult> Index()
{
}
Run Code Online (Sandbox Code Playgroud)

但是我已经将我的角色存储在了角落中,因为它们可能会在某些时候改变或扩展.

public const RoleA = "RoleA";
public const RoleB = "RoleB";
public const RoleC = "RoleC";
Run Code Online (Sandbox Code Playgroud)

我不能这样做,因为字符串必须在编译时知道:

[Authorize(Roles = string.join(",",RoleA,RoleB,RoleC)]
public async Task<ActionResult> Index()
{
}
Run Code Online (Sandbox Code Playgroud)

有没有办法规避问题?

我可以编写一个只包含"RoleA,RoleB,RoleC"的const - 但我不喜欢魔术字符串,这是一个神奇的字符串.更改角色名称而忘记更改组合字符串将是一场灾难.

我正在使用MVC5.ASP.NET Identity和Role在编译时是已知的.

c# asp.net-mvc authorization

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

WiX源文件的相对路径

我的项目有一个简单的解决方案,效果很好.但我无法掌握如何使源路径相对.有人能帮助我吗?

  <Component Id="Bla.exe" Guid="*">
    <File Id="Bla.exe" Source="D:\Projects\Bla\Bla\bin\Debug\Bla.exe" KeyPath="yes" Checksum="yes"/>
  </Component>
Run Code Online (Sandbox Code Playgroud)

如何使路径相对于Wix解决方案?WiX和所有必需的文件都在同一个解决方案中.

wix

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

Pandas Groupy只接受前N组

我有一些DataFrame,我想按ID分组,例如:

import pandas as pd
df = pd.DataFrame({'item_id': ['a', 'a', 'b', 'b', 'b', 'c', 'd'], 'user_id': [1,2,1,1,3,1,5]})
print df
Run Code Online (Sandbox Code Playgroud)

哪个产生:

  item_id  user_id
0       a        1
1       a        2
2       b        1
3       b        1
4       b        3
5       c        1
6       d        5

[7 rows x 2 columns]
Run Code Online (Sandbox Code Playgroud)

我可以轻松地按ID分组:

grouped = df.groupby("item_id")
Run Code Online (Sandbox Code Playgroud)

但是,我怎样才能只返回前N个分组对象?E. g.我只想要前3个唯一的item_ids.

python pandas

14
推荐指数
1
解决办法
9175
查看次数

键入可能值列表的提示

我有一个可以采用固定值列表的函数:例如

def func(mode="a"):
   if mode not in ["a", "b"]:
      raise AttributeError("not ok")
Run Code Online (Sandbox Code Playgroud)

有没有办法输入提示它只能是这两个值之一?

python type-hinting

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

函数名在python类中是未定义的

我是python的新手,我遇到了一些与命名空间有关的问题.

class a:
    def abc(self):
        print "haha" 
    def test(self):
        abc()

b = a()
b.abc() #throws an error of abc is not defined. cannot explain why is this so
Run Code Online (Sandbox Code Playgroud)

python undefined

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

Epplus使用超链接等Excel样式

我试图设计一些单元格,我想使用标准的"超链接"样式,但我无法找到它.

这是我最好的猜测代码,但工作簿不包含"标准"以外的样式

      var hLinkStyle = (from s in dataSheet.Workbook.Styles.NamedStyles where s.Name == "Hyperlink" select s).FirstOrDefault();
      hyperlinkCell.StyleName = hLinkStyle.Name;
Run Code Online (Sandbox Code Playgroud)

styles epplus

12
推荐指数
1
解决办法
8409
查看次数

如何在Windows Server 2016上运行Linux Docker镜像?

我在windows 10上使用了docker for windows with linux container - 但现在我想用一个新的闪亮的Windows Server 2016来完成这项任务 - 但是如何?

我使用本指南安装了docker功能:https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server

安装普通的docker.msi失败,因为Windows版本不是Windows 10.

不幸的是,当试图运行任何Linux vm docker时抛出错误:

image operating system "linux" cannot be used on this platform.
Run Code Online (Sandbox Code Playgroud)

在docker beta中,我可以在使用windows容器或linux容器之间切换 - 但是我如何在Server 2016上做到这一点=没有托盘图标或者其他.

linux docker windows-server-2016

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

Office Open XMl SDK将数字写入工作表

我正在尝试将数字从DataTable写入数据表 - 遗憾的是,这不能按预期工作,例如DataSheet已损坏.

我使用以下代码:

    private void AddDataToSheet(ExcelViewData data, SheetData sheetData)
            {
                var excelData = data.WriteableDataTable; 
//// this returns a datatable
////the numbers have a format like "8,1" "8,0" etc.
                for (int i = 0; i < excelData.Rows.Count; i++)
                {
                    Row row = new Row();
                    //row.RowIndex = (UInt32)i;
                    for (int c = 0; c < excelData.Columns.Count; c++)
                    {
                        Cell cell = new Cell();
                        CellValue cellvalue = new CellValue();
                        //cell.CellReference = SharedMethods.GetExcelColumnName(i + 1) + (c + 1).ToString();
                        cell.DataType = DocumentFormat.OpenXml.Spreadsheet.CellValues.Number;
                        cellvalue.Text …
Run Code Online (Sandbox Code Playgroud)

c# excel openxml-sdk

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

Selenium:Docker 容器中的 Chrome:截图?

我正在使用官方的 selenium chrome 驱动程序 图片:https ://hub.docker.com/r/selenium/standalone-chrome/

不幸的是,我无法在容器中截取屏幕截图。

这段代码在容器之外运行得很好:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("http://www.python.org")
driver.save_screenshot("some_file.png")
driver.close()
Run Code Online (Sandbox Code Playgroud)

但在容器中,save_screenshot 返回 false。我在chrome的github上发现了一个小提示,必须设置屏幕尺寸和深度,但是将它们设置为1920 * 1080 * 24并没有改变任何东西

selenium google-chrome docker

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

Can Lists可以应付一百万件物品吗?

我正在Python 2.6(*)中慢慢开发一个数据处理应用程序.我的测试数据非常小,例如5000个案例,但预计在不久的将来将有一百万个案例,我想知道我目前的方法在这些条件下是否可行.

问题的结构:我有两个csv文件,一个包含调用(5000行,20列),另一个包含调用的详细信息(500行,10列).我必须构建第三个csv文件,其中包含"调用"文件中的所有案例,其中包含找到的其他详细信息.在幕后有一些繁重的工作(详细列表中的数据合并和重组,列表之间的数据比较).但是我对构建输出列表非常紧张:目前代码看起来像这样:

def reduceOutputListToPossibleMatches(outputList, detailsList):
    reducedList = list()

    for outputItem in outputList:
        isFound = False
        for detailsItem in detailsList:
            if detailsItem[14] == outputItem[4]:
                if isfound:
                    detailsItem[30] = "1" #ambigous case
                                          # - more than one match was found
# 1 is an indicator for true - I am not using python here because spss has no support for booleans.
                isFound = True
        if isFound:
            reducedList.append(detailsItem )

    return reducedList
Run Code Online (Sandbox Code Playgroud)

我认为这个算法需要很长时间,因为我必须循环两个大型列表.所以我的问题可以归结为:Python中的列表有多快,是否有更好的替代方案?另外:双列表有点不方便处理,因为我必须记住每列的索引位置 - 有更好的选择吗?

*=我稍后会调用SPSS版本19,它拒绝使用较新版本的python.

python csv

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