我有一个 .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 文件,或者是否有其他方法可以做到这一点?在此先感谢您的帮助!
我对 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) 我使用的是 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,但我的安装中肯定缺少一些东西。任何有关更改目标的帮助都将受到赞赏!
我有一个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) 我开始在 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服务器,但我不能直接访问它,所以希望这不是一个要求......
我使用 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 中是否有一个设置可以在列名旁边显示数据类型,或者其他一些有创意的小技巧可以让这个任务更容易?
考虑这种类型的枚举,您可以使用按位比较基本上将多个布尔值组合到一个数据字段中:
[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个标志(但我也对理论限制感兴趣.)
提前致谢!