小编Dav*_*ash的帖子

如何通过 Windows 防火墙允许 .NET Core 控制台应用 FTP 连接?

我有一个 .NET Core 控制台应用程序,它从 FTP 服务器下载文件并处理它们。我将应用程序移到新服务器上,但它停止工作。在新服务器上禁用 Windows 防火墙解决了这个问题,但显然我不想让它完全打开 - 我需要一种有针对性的方式来启用这个应用程序。默认防火墙规则似乎已经允许(入站和出站)FTP 流量,因此我不知道可以打开哪些其他端口(我想我正在使用活动 FTP,它可以使用广泛的端口范围 AFAIK)。我更愿意将该应用程序列入白名单,但它不是 .exe 文件,所以我不确定要允许哪个应用程序。

我使用 .bat 文件的快捷方式运行该应用程序。bat 文件仅包含以下行:

dotnet "C:\path\my-application.dll"
Run Code Online (Sandbox Code Playgroud)

应用程序失败的代码是:

FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(ftpServerUri);
request.UseBinary = true;
request.Credentials = new NetworkCredential(ftpUser, ftpPsw);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Proxy = null;
request.KeepAlive = false;
request.UsePassive = false;

// hangs here forever unless Windows Firewall is turned off
FtpWebResponse response = (FtpWebResponse)await request.GetResponseAsync();
Run Code Online (Sandbox Code Playgroud)

是否可以允许应用程序通过防火墙?我是否允许使用 dotnet.exe、.bat 文件或 .dll 文件,或者是否有其他方法可以做到这一点?在此先感谢您的帮助!

.net c# ftp windows-firewall .net-core

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

单击时 WPF DataGrid 给出 ArgumentOutOfRangeException

我对 WPF 和 MVVM 相当陌生,总体来说还是个新手,所以先感谢您的耐心等待。

我在模型中使用自定义类,并且在视图模型中有该自定义对象的 ObservableCollection。在类的构造函数中,我在实例化对象时将其添加到集合中。在我看来,我使用绑定到集合的 DataGrid 来列出该类的所有活动实例。我正在尝试实现从 DataGrid 拖放到垃圾桶图标上的操作,这将允许用户处理不需要的类实例。

问题是,当您单击 DataGrid 中的任何内容时,程序会立即崩溃并出现 ArgumentOutOfRange 异常 - (“给定的 DisplayIndex 超出范围。DisplayIndex 必须大于或等于 0 且小于 Columns.Count。”“实际值为 0”)。DisplayIndex 似乎与 DataGrid 列相关,因此此异常可能是由于我没有显示传统意义上的任何列 - 在我的 DataGrid 中,AutoGenerateColumns 设置为 False,并且我正在显示需要使用显示的所有内容行详细信息模板。(原因是我显示 DataGrid 的区域很窄,因此我需要一个嵌套的、特定于项目的网格来正确表示项目。)DataGrid 可以很好地显示并与集合同步,但显然存在一些问题。我已经阅读了数十个有关 DataGrid 崩溃的链接,但没有找到任何涉及此异常的内容。

我期望的行为是在拖放 DataGrid 项表示的自定义对象时将其传递到目标。我不关心他们单击了哪个“列”或其他任何内容 - 我只需要一种将对象引用或 SelectedIndex (集合中的项目索引)传递给视图模型中的方法的方法。

预先感谢您的任何帮助!令人讨厌的代码(XAML)似乎是:

<ScrollViewer DockPanel.Dock="Bottom" Margin="2" Width="180" ScrollViewer.VerticalScrollBarVisibility="Auto">
            <DataGrid ItemsSource="{Binding Path=myCollection, Mode=OneWay}" AutoGenerateColumns="False" RowDetailsVisibilityMode="Visible" HeadersVisibility="None">
                <DataGrid.RowDetailsTemplate>
                    <DataTemplate DataType="model:myClass">
                        <Border CornerRadius="10" Background="AliceBlue">
                            <Grid>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="50" />
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition /> …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml datagrid mvvm

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

Unity - 为什么我看不到当前脚本运行时/API 兼容性级别选项?

我使用的是 Unity 2018.2.6f1(几天前刚刚更新),在此之前,我使用的是 Unity 2018.2.5。我正在尝试导入 .Net Standard 2.0 类库,但收到错误

项目...目标为“netstandard2.0”。它无法被面向“.NETFramework,Version=v3.5”的项目引用。

我不知道如何将我的 Unity 项目更改为面向 .Net Standard 2.0。

这个问题似乎问同样的事情,但我无法遵循已接受的答案,因为较新的选项不会显示在脚本运行时版本或 Api 兼容性级别的播放器设置中。在我的 Unity 版本中,脚本运行时版本的唯一选项是 .NET 3.5 等效项或 .NET 4.x 等效项,Api 兼容性级别的唯一选项是 .NET 2.0 和 .NET 2.0 子集。

Unity 文档还引用了我没有看到的选项 - 如果我可以将项目设置为 .Net Standard 2.0,它说我应该能够引用类库而无需额外的步骤,但我再次陷入困境将我的项目更改为该项目。根据我发布的链接,我应该看到新的 .NET4.6 选项以及 .Net Standard 2.0,但我的安装中肯定缺少一些东西。任何有关更改目标的帮助都将受到赞赏!

c# unity-game-engine

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

无法使用Alamofire 4.1.0,Xcode 8和Swift 3构建项目 - 没有这样的文件或目录

我有一个iOS项目,我近一年没有更新,但现在我需要添加一个功能.在经历了必须更新Swift的常规麻烦之后(因为我在此期间更新了Xcode),我还有一个问题似乎与Alamofire有关,不希望构建时出现以下错误(没有这样的文件或目录) :

PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks /Users/David/Library/Developer/Xcode/DerivedData/Dealer_Dashboard-darqlvvgqwnvdybcswbtllluwvjw/Build/Intermediates/Dealer\ Dashboard.build/Debug-iphonesimulator/Dealer\ Dashboard.build/Script-210B7DE0B605AB4E3AA431FD.sh
    cd "/Users/David/Documents/TC-Dev/Dealer Dashboard"
    /bin/sh -c \"/Users/David/Library/Developer/Xcode/DerivedData/Dealer_Dashboard-darqlvvgqwnvdybcswbtllluwvjw/Build/Intermediates/Dealer\ Dashboard.build/Debug-iphonesimulator/Dealer\ Dashboard.build/Script-210B7DE0B605AB4E3AA431FD.sh\"

mkdir -p /Users/David/Library/Developer/Xcode/DerivedData/Dealer_Dashboard-darqlvvgqwnvdybcswbtllluwvjw/Build/Products/Debug-iphonesimulator/Dealer Dashboard.app/Frameworks
rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "/Users/David/Library/Developer/Xcode/DerivedData/Dealer_Dashboard-darqlvvgqwnvdybcswbtllluwvjw/Build/Products/Debug-iphonesimulator/Alamofire/Alamofire.framework" "/Users/David/Library/Developer/Xcode/DerivedData/Dealer_Dashboard-darqlvvgqwnvdybcswbtllluwvjw/Build/Products/Debug-iphonesimulator/Dealer Dashboard.app/Frameworks"
building file list ... done

sent 196 bytes  received 20 bytes  432.00 bytes/sec
total size is 1965425  speedup is 9099.19
Code Signing /Users/David/Library/Developer/Xcode/DerivedData/Dealer_Dashboard-darqlvvgqwnvdybcswbtllluwvjw/Build/Products/Debug-iphonesimulator/Dealer Dashboard.app/Frameworks/Alamofire.framework with Identity -
/usr/bin/codesign --force --sign -  --preserve-metadata=identifier,entitlements …
Run Code Online (Sandbox Code Playgroud)

xcode ios swift alamofire swift3

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

项目从VS2015升级到VS2017后TFS绑定无效

我开始在 VS 2015 中开发 .Net Core 解决方案,其中包含一个 ASP.Net Core 项目和几个 .Net Core 类库。该解决方案受 TFS 源代码控制。

我想包括一些单元测试。由于 VS 2015 中不包含 .Net Core 单元测试项目模板,因此我决定安装 VS 2017 并升级解决方案。升级后,我能够添加一个单元测试项目,一切都可以正常编译和运行。

不过,当我升级后第一次打开该解决方案时,我最初收到一个错误,该错误表明该解决方案被视为不受源代码控制。根据 Google 搜索,我进入“文件”->“源代码管理”->“高级”->“更改源代码控制”,然后在每个项目上单击“绑定”。三个旧项目直接链接并显示为“有效”,而解决方案文件和新的单元测试项目显示为“无效”。解除绑定、卸载、重新加载和重新绑定无效项目都没有帮助。我可以强制项目绑定,即使它是无效的(针对 Visual Studio 的警告),经过一些修补后,我可以获取要签入的解决方案,但是当我在另一台计算机上获取最新版本时,三个原始项目显示“不可用” " 并且单元测试项目不可见。

其他症状:当我尝试签入时找不到project.json(我必须“撤消”或“排除”才能签入解决方案),并且无论我尝试什么,无效的单元测试项目的文件夹都会显示在根目录中目录树的文件夹(与“src”和“Backup”处于同一级别),而有效项目位于“src”目录中。我推断这是因为新的解决方案类型允许 .xproj 文件,而旧的解决方案需要 project.json,但我不知道该怎么办......

任何有关如何将其重新链接到源代码控制的想法将不胜感激!当我升级VS时,我没有升级TFS服务器,但我不能直接访问它,所以希望这不是一个要求......

.net c# tfs visual-studio-2017

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

在 SQL Server 中查找存储过程结果的数据类型和列名

我使用 Dapper 作为 ORM 工具来使用 C# 代码中的 SQL Server 数据库。为此,我创建了反映数据库结构的强类型类,以便可以轻松地在 C# 和 SQL Server 之间来回获取对象。

为了根据 SQL Server 表定义快速建模 C# 类(并编写单元测试以确保数据层和数据库同步),我使用如下查询:

SELECT 
    SchemaName = c.table_schema, TableName = c.table_name, 
    ColumnName = c.column_name, DataType = data_type, 
    MaxLength = ISNULL(c.CHARACTER_MAXIMUM_LENGTH, -1) 
FROM 
    information_schema.columns c 
INNER JOIN 
    information_schema.tables t ON c.table_name = t.table_name 
                                AND c.table_schema = t.table_schema 
                                AND t.table_type = 'BASE TABLE' 
ORDER BY 
    SchemaName, TableName, ordinal_position;
Run Code Online (Sandbox Code Playgroud)

这将返回每个模式和表名称及其每个列和数据类型,这使大多数 CRUD 样式的操作变得容易:

示例结果

我现在的问题是创建模型类来使用某些存储过程,这些存储过程连接许多表并为许多列使用别名(例如,连接到员工表两次,将第一组员工详细信息别名为 ManagerName、ManagerEmail 和第二个设置为 WorkerName、WorkerEmail 等)其中一些过程返回数百列,我不得不通过表定义来查看哪些列需要建模为 Int16/Int32/Int64 等,加上过程在这一点上还不是一成不变的,如果我能帮忙的话,我不想手动审核这些东西以确保它们同步。

所以,我的问题是:SQL Server 是否提供了一种查看有关存储过程结果集的“元数据”(即过程将返回的列名和数据类型)的方法?如果没有,SSMS 中是否有一个设置可以在列名旁边显示数据类型,或者其他一些有创意的小技巧可以让这个任务更容易?

sql-server

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

在枚举中有意义的最大标志数是多少?

考虑这种类型的枚举,您可以使用按位比较基本上将多个布尔值组合到一个数据字段中:

[Flags]
public enum Options 
{
    None    = 0,
    Option1 = 1,
    Option2 = 2,
    Option3 = 4,
    Option4 = 8
}
Run Code Online (Sandbox Code Playgroud)

我已阅读MSDN文档,网址https://msdn.microsoft.com/en-us/library/ms229062(v=vs.100).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet -1并完成了一些谷歌搜索,但我仍然有一些架构问题.

似乎最多[EDIT:8]选项(加上"none"),您可以将任何标志组合放入单个存储字节中.这实际上是它在运行时是如何处理的,还是只是陷入了Int32而浪费了剩余的空间?添加第九个选项是否存在效率劣势?如果是这样,在达到下一个效率劣势之前,您还可以添加多少选项?关于其中一个应该有多大,是否有经验法则?我正在考虑将这个用于需要至少6个标志的应用程序,但可以想象它会增加到8-12个标志(但我也对理论限制感兴趣.)

提前致谢!

c#

-3
推荐指数
1
解决办法
471
查看次数