小编Ama*_*nth的帖子

Directory.Exists不适用于网络路径

我有一行代码检查目录是否存在,然后获取其中的文件列表.

System.IO.Directory.Exists(@"\\Server\Folder\");
Run Code Online (Sandbox Code Playgroud)

我在测试时工作(从visual studio运行),但是当我部署网站时,它总是返回false.

我对另一个文件夹,在另一台服务器(比如说Server2)上进行相同的验证,它运行正常.

然后我认为这是一个访问问题,但共享文件夹和网络可以访问所有人...还有其他原因导致它不起作用吗?

c# asp.net directory

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

Asp.net会话变量

我有一个带有c#代码的asp.net项目.我有一个名为GlobalVariable的静态类,我存储了一些信息,例如当前选择的产品.

但是,我看到当有两个用户使用该网站时,如果有人更改了所选产品,则会为每个人更改.静态变量似乎与每个人都是共同的.

我想创建(来自c#代码)某种会话变量,它只使用c#代码,但不仅来自页面,而且来自任何类.

c# asp.net session-variables

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

从运行脚本获取python安装路径

我的计算机上安装了两个版本的python.3.2 64位安装在C:\ Python32 \和2.7 32位安装在C:\ Python27中.

我还在注册表(64位和32位)中挖掘了一个C#应用程序,以获取最合适的python版本的安装路径,具体取决于各种条件.

我有一个名为Code.py的脚本,它由C#应用程序使用它选择的python版本运行.

在Code.py脚本,我想要运行位于用C另一个脚本:\ Python32\Scripts中或C:\ Python27\Scripts中,这取决于使用了哪个Python版本上.但是,我想知道用于运行我当前脚本的python.exe文件的安装路径是什么.有没有办法做到这一点,或者我必须将C#应用程序选择的安装路径传达为我运行脚本时的一个参数(我想避免)?

编辑:我使用此代码将脚本中的脚本称为外部脚本

p = subprocess.Popen(["python", installPath + "\\Scripts\\Flake8", file], stdout=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)

python

7
推荐指数
1
解决办法
9361
查看次数

Python撤消方法mock

我正在使用Mock从具有特定返回值的类替换方法.它工作得很好,也许有点太好......我这样做(见下文),但是在下一个测试类中,我重复使用密码类而不进行模拟,并且放置在该测试中的模拟仍然有效.

from utils import password as pass_helper

class TestPassword(unittest.TestCase):
    def setUp(self):
        self.username = "user"
        self.password = "Test_1234_pass"
        pass_helper._get_password_from_keyboard = Mock(return_value=self.password)

    def test_password(self):
        password = pass_helper._get_password_from_keyboard(self.username)
        self.assertEqual(password, self.password)
Run Code Online (Sandbox Code Playgroud)

我尝试通过这样的方式撤消TearDown方法中的mock,但它不起作用.

pass_helper._get_password_from_keyboard = pass_helper._get_password_from_keyboard
Run Code Online (Sandbox Code Playgroud)

如何恢复类方法的原始功能?

unit-testing mocking python-2.7 teardown

7
推荐指数
1
解决办法
2603
查看次数

如何将项添加到字典"并行循环安全"

我有一个Parallel.ForEach循环做一些处理.但是第一个操作是在未包含密钥的情况下在字典中添加值.添加它时出错,它表示密钥已经在字典中.我猜这个密钥是在这个线程的.Contains检查之后但是在添加之前由并行进程添加的.除了将该行放在try-catch中之外,还有另一个我可以用来防止该错误的简单解决方案吗?

Parallel.ForEach(branchFixes, b =>
{
  Parallel.ForEach(b.Value, t =>
  {
    var team = t.Key;
    if (!resultTeamDict.ContainsKey(team))
    {
      resultTeamDict.Add(team, new Dictionary<FixItem, Dictionary<BranchInfo, bool>>());
    }
  });
});
Run Code Online (Sandbox Code Playgroud)

c# dictionary parallel.foreach

7
推荐指数
2
解决办法
8136
查看次数

Inno Setup为每个文件调用AfterInstall函数

我想在安装文件夹后调用一个函数,但是InstallEnv函数似乎被调用了好几次,也许每个文件都是文件夹(待确认).有没有办法在安装所有这些文件后只调用一次?我不能使用该Run部分,因为我想要使用返回代码进行错误捕获.

Source: "InputFiles\virtualenv-1.8.2\*"; DestDir: "{tmp}/virtualenv"; \
    Flags: recursesubdirs; AfterInstall: InstallEnv; 
Run Code Online (Sandbox Code Playgroud)

inno-setup pascalscript

6
推荐指数
2
解决办法
3488
查看次数

Python requests.post multipart/form-data

我必须使用REST API将文件和信息上传到服务器.该API使用多部分表单,但我似乎无法正确使用它.

以下是我根据API文档使用的信息.

表格参数:

  • description - 分发的简短描述.
  • release_notes_url - 指向发行说明的网址.
  • zip_file - 包含分发文件的ZIP文件.

示例请求:

POST /api/v1/distribution HTTP/1.1
Host: api.company.onbe
Authorization: t=...
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryZayrf7leHxinyQsX


------WebKitFormBoundaryZayrf7leHxinyQsX
Content-Disposition: form-data; name="release_notes_url"
http://releases/3.0.0/release_notes_3_0_0.pdf
------WebKitFormBoundaryZayrf7leHxinyQsX
Content-Disposition: form-data; name="description"
This is the new distribution!
------WebKitFormBoundaryZayrf7leHxinyQsX
Content-Disposition: form-data; name="zip_file"; filename="BackEnd-3.0.0.zip"
Content-Type: application/x-zip-compressed
------WebKitFormBoundaryZayrf7leHxinyQsX--
Run Code Online (Sandbox Code Playgroud)

我尝试了几个东西,例如下面的代码,但是我一直从服务器得到错误的请求错误.

import requests

file= open('BackEnd-3.0.0.zip','r').read()

url = 'api.company.onbe/api/v1/distribution'

payload = {
  'description' :'Some desc',
  'release_notes_url':'Someurl.pdf',
  'zip_file': file
  }

response = requests.post(url, data=payload)
Run Code Online (Sandbox Code Playgroud)

python post multipartform-data python-requests

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

Docker容器中的简单REST Web服务器

我想要一个提供REST API的小型Web服务器,外部工具可以调用存储非常少量的数据(写入或读取数据)并提供一个html页面来显示该数据.

数据将是一个简单的矩阵(2d表).我打算让外部工具用json格式的REST api(表的一个方格)发送一个数据条目(它只包含三个字符串).也许将数据存储在xml文件中.

我希望该Web服务器位于docker容器中,因此可以在我们的云环境中轻松部署(使用卷,因此不会丢失数据).它将在Linux环境下运行.

我知道这是一个广泛的问题,但我想知道在这种情况下使用什么技术.我应该使用Python吗?我实际上不知道该怎么做.我过去做过docker容器用于其他事情,在JAVA中做了一些REST api,但没有这样的.

你有建议或资源吗?

linux rest web-services docker

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

Inno设置Pascal脚本来搜索运行进程

我目前正在尝试在卸载时进行验证.在Pascal脚本函数中,在Inno Setup中,我想搜索特定的进程,如果可能的话使用通配符.然后,遍历所有查找结果,获取图像名称和图像路径名称,以检查即将卸载的程序是否与正在运行的程序相同.

有没有办法做到这一点?

windows inno-setup tasklist pascalscript

4
推荐指数
1
解决办法
1878
查看次数

批处理文件REG QUERY命令在32位注册表而不是64位中搜索

在我的批处理文件中,我正在执行一个简单的命令来获取VirtualBox安装路径.

REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\VirtualBox /v InstallDir
Run Code Online (Sandbox Code Playgroud)

当我从命令行执行批处理文件时,它会产生奇迹,但如果我从Inno Setup启动相同的批处理文件,则不会给出任何值.

经过一段时间的测试,我发现它只是在从Inno Setup启动批处理文件时才在注册表的32位部分进行搜索.

为了测试这个理论,我查看了位于那里的32位注册表:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\NuGet\Repository
Run Code Online (Sandbox Code Playgroud)

在我的批处理文件中,我输入以下命令(注意我没有指定Wow6432Node,这应该是错误的)

REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\NuGet\Repository\
Run Code Online (Sandbox Code Playgroud)

实际上,从命令行运行批处理文件时,它找不到注册表项.但是,当从Inno Setup启动相同的批处理文件时,它会发现\ NuGet\repository就好了.

现在的问题是.如何使用我的批处理文件获取64位注册表项(Virtual Box),以便它可以在命令行和Inno Setup中运行?

registry inno-setup batch-file 32bit-64bit

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

DragDrop事件未引发

这是一个愚蠢的问题......我正试图将一个图片框拖放到一个面板上.我遵循了一些例子,但它不起作用.从不引发面板的DragDrop事件.我在网站上搜索了一个解决方案并发现了一年多的两个主题,但他们的解决方案没有用.我创建了一个新项目,只有这个代码:

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            pictureBox1.MouseDown += new MouseEventHandler(pictureBox1_MouseDown);
            panel1.DragDrop +=new DragEventHandler(panel1_DragDrop);
            panel1.DragOver +=new DragEventHandler(panel1_DragOver);
        }

        private void panel1_DragOver(object sender, DragEventArgs e)
        {
            Console.WriteLine("DragOver");
        }

        private void panel1_DragDrop(object sender, DragEventArgs e)
        {
            Console.WriteLine("DragDrop");
        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            Console.WriteLine("Mouse");
            pictureBox1.DoDragDrop(pictureBox1.Text, DragDropEffects.All);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我还将面板的AllowDrop和窗体设置为true.DragOver和MouseDown被引发.此外,当我拖动图片框时,光标变成一个禁止的圆圈,就像是一个不允许的操作.有没有办法让光标成为图片框中的图像?我不希望图片框移动,只是为了向面板添加项目.

drag-and-drop raiseevent

2
推荐指数
1
解决办法
8453
查看次数

在 Inno Setup 卸载中调用 exe

我有 Inno Setup 卸载程序的问题。我有一个 exe 文件,我想执行它以跟踪安装和卸载。exe 非常简单,它会向服务器发送消息。

[Files]
Source: "Tracker\LocalSandboxInstallTracker.exe"; DestDir: "{app}/Tracker";
Source: "Tracker\LocalSandboxInstallTracker.exe.config"; DestDir: "{app}/Tracker";
Source: "Tracker\Tracker.Client.dll"; DestDir: "{app}/Tracker";

[Run]
Filename: "{app}\Tracker\LocalSandboxInstallTracker.exe"; Parameters: " {#MyAppVersion} install"; Flags: runhidden; StatusMsg: "Sending tracking data..."

[Code]
procedure InitializeUninstallProgressForm();
var
  ResultCode: Integer;
begin
  Exec ('{app}\Tracker\LocalSandboxInstallTracker.exe',' {#MyAppVersion} uninstall','',SW_SHOW, ewWaitUntilTerminated, ResultCode);
end;
Run Code Online (Sandbox Code Playgroud)

安装时的调用效果很好,但卸载时则不行。我在我的 Exec 命令上放置了一个断点,它确实通过了那里,但似乎没有调用 exe。

pascal inno-setup uninstallation

2
推荐指数
1
解决办法
3710
查看次数