小编Dav*_*gan的帖子

CA2227的解决方案还是更好的方法?

我只使用代码分析进行清理,组织并确保针对特定警告的所有实例全局执行这些更改.我到了决赛,这是CA2227.

CA2227集合属性应该是只读的通过删除属性setter将''变为只读.

请注意,这是用于EDI文档的映射.这些类代表EDI文档的全部或部分.

public class PO1Loop
{

    public SegmentTypes.PO1LoopSegmentTypes.PO1 PO1 { get; set; }

    public Collection<SegmentTypes.PO1LoopSegmentTypes.PID1> PIDRepeat1 { get; set; }

    public Collection<SegmentTypes.PO1LoopSegmentTypes.PID2> PIDRepeat2 { get; set; }

    public SegmentTypes.PO1LoopSegmentTypes.PO4 PO4 { get; set; }

    /* Max Use: 8 */
    public Collection<SegmentTypes.PO1LoopSegmentTypes.ACK> ACKRepeat { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

您可以看到所有Collection属性都会给我这个警告,并且有数百个.使用上面的类时,我实例化它没有任何数据.然后在外部我添加数据并通过其公共访问器设置每个单独的变量.我没有使用构造函数方法准备和传递所有数据来实例化这个类(IMO的大小可以达到它可以轻易地对眼睛造成严重破坏).完成并分配所有属性后,整个类将用于生成它所代表的文档的那一部分.

我的问题是,对于上面描述的用法,什么是更好的方法来正确设置它?我是否保留公共访问者并完全抑制此警告,或者是否有完全不同的解决方案可行?

c# code-analysis visual-studio

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

FTP 上传失败“底层连接已关闭:接收时发生意外错误。”

我正在尝试将文件上传到 FTP,直到今天为止一直成功。在这里(在工作中)我从来没有遇到过问题,但是在现场生产中我们遇到了零星的问题,但是今天突然间它不能 100% 工作,我一生都无法解决这个问题我的。

我几乎尝试了所有能找到的东西。

  • 这不是网络服务。
  • 我已将 FtpWebRequest 的 Timeout 和 ReadWriteTimeout 增加到 -1。
  • 我已经设置了用于写入文件内容的流的 WriteTimeout 和 ReadTimeout。
  • 我们已确保出站规则设置为允许我们通过等进行通信的端口,并且可以确认我们可以使用 FileZilla 从同一计算机/网络进行写入/读取。
  • 文件不大。它们的最大大小为 1MB,并且是简单的文本文件。

下面是我使用的方法。如果您需要更多信息,请告诉我。

private static void FtpUpload(String username, String password, String address, 
                              Int32 port, Boolean usePassive, String filePath)
{
    try
    {
        String fileName = "";

        fileName = Path.GetFileName(filePath);
        FtpWebRequest request = null;
        request = (FtpWebRequest)FtpWebRequest.Create(String.Format("ftp://{0}", address));

        request.Credentials = new NetworkCredential(
            username,
            password);
        request.UsePassive = usePassive;
        request.Method = WebRequestMethods.Ftp.UploadFile;
        request.Timeout = -1;
        request.ReadWriteTimeout = -1;
        request.KeepAlive …
Run Code Online (Sandbox Code Playgroud)

.net c# ftpwebrequest

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

使用无限while循环防止高CPU使用率的正确方法(控制台/表单混合)

我把一个控制台/表单混合程序放在一起,为了实现我正在寻找的行为,我必须在一个线程中"运行"控制台,然后用另一个启动仪表板.

我用过BackgroundWorker这个.基本上在Main方法中我启动控制台后台工作器,它在其DoWork块中执行正常的while循环以保持控制台运行.重复检查来自控制台的输入并将其传递给它相应的操作.

while (true && !Program.Shutdown)
{
    String consoleInput = "";

    consoleInput = Program.ReadFromConsole();

    if (String.IsNullOrWhiteSpace(consoleInput))
        continue;

    try
    {
        Program.Shell(consoleInput);
    }
    catch (Exception ex)
    {
        Program.WriteToConsole(ex.Message);
    }
}
Run Code Online (Sandbox Code Playgroud)

在调用启动控制台的后台工作程序之后,即ConsoleBackgroundWorker.RunWorkerAsync()调用执行加载序列的方法.

此加载序列CAN调用第二个后台工作程序,该工作程序在单独的线程内部启动仪表板.

现在我遇到的问题是加载序列结束时的循环.此循环可防止所有事务都关闭,直到两个后台工作程序都已完成(窗体关闭或控制台发送命令关闭)

while (ConsoleBackgroundWorker != null && DashboardBackgroundWorker != null)
{
    /* I'm not sure of how else to fix this. But 
     * this corrects the high CPU usage reported 
     * in the Task Manager. */
    System.Threading.Thread.Sleep(10);
}
Run Code Online (Sandbox Code Playgroud)

问题是CPU使用率,它一直保持在30%,这是没有你上面看到的那条线 System.Threading.Thread.Sleep(10)

我的问题是,这样可以吗?如果没有,我有什么解决方案?我注意到这确实纠正了这个问题,当应用程序没有做任何事情时,CPU现在的速度为0%.我也没有看到任何性能变化.但它还没有真正被"推",所以我不能肯定地说后者的观察.

.net c# multithreading

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

无法使用除 localhost/127.0.0.1 以外的任何内容连接到 IIS 站点

我终于 [煞费苦心] 使用 IIS7 设置了一个本地托管站点。

我现在可以通过主机上的http://localhost/mediaorganizer/http://127.0.0.1/mediaorganizer/连接到它。

但是,当我尝试在其自身或网络上的另一台机器上使用主机的 IP 地址时,出现以下错误:

拒绝连接错误

我在没有运气的情况下上下搜索。我已经为入站设置了防火墙规则,它们设置为端口 80 上的 TCP,使用万维网服务(HTTP 流量输入)。我在 IIS 中将绑定设置为 http、所有未分配、80。我还确保在以管理员身份运行 IIS 管理器时启动站点。但一切都没有运气。

我觉得我可能错过了一个最终的过程来达到我想要的效果。我在这个项目上度过了充实的一天,希望得到任何帮助。

最近的日志

软件:微软 HTTP API 2.0

版本:1.0

日期:2016-08-28 02:33:55

字段:日期时间 c-ip c-port s-ip s-port cs-version cs-method cs-uri streamid sc-status s-siteid s-reason s-queuename

2016-08-28 02:33:55 127.0.0.1 50211 127.0.0.1 80 - - - - - - Timer_ConnectionIdle - 2016-08-28 02:36:29 127.0.0.1 1.0106.1 50736 / HTTP 400 - 主机名 - 2016-08-28 02:37:30 127.0.0.1 50331 127.0.0.1 80 - …

iis iis-7 localhost

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