Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ConfigurationManager.AppSettings-使用打开时返回null_C#_.net_Winforms - Fatal编程技术网

C# ConfigurationManager.AppSettings-使用打开时返回null

C# ConfigurationManager.AppSettings-使用打开时返回null,c#,.net,winforms,C#,.net,Winforms,我有一个.NET Windows窗体应用程序来显示图像,它可以访问ConfigurationManager.AppSettings来获取一些设置 它在调试时运行良好,而且当我直接单击编译的exe时,我可以从app.config文件中获取设置 当我的应用程序不是由我直接执行时,问题就出现了。当我将文件扩展名与之关联,或手动执行“打开方式”时,访问ConfigurationManager.AppSettings时,我会得到null 有什么想法吗 多谢各位 ****编辑***** 当我使用以下代码时,

我有一个.NET Windows窗体应用程序来显示图像,它可以访问
ConfigurationManager.AppSettings
来获取一些设置

它在调试时运行良好,而且当我直接单击编译的exe时,我可以从
app.config
文件中获取设置

当我的应用程序不是由我直接执行时,问题就出现了。当我将文件扩展名与之关联,或手动执行“打开方式”时,访问
ConfigurationManager.AppSettings
时,我会得到null

有什么想法吗

多谢各位

****编辑*****

当我使用以下代码时,我发现问题发生了:

这基本上就是文件关联。我不知道根本原因是什么,但在explorer上手动执行文件关联不会发生问题


谢谢

我试过了,而且很有效

App.Config

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <appSettings>
    <add key="ExtensionSupported" value ="jpeg,jpg"/>
  </appSettings>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
</configuration>

没有明显的失败方式,Windows仍然以与调试器相同的方式运行.exe。但同样,不使用
Properties.Settings
检索应用程序设置是非常不寻常的。为了让你免于这样的麻烦。你做错了,我们看不出你做错了。你能检查一下应用程序目录中配置文件的名称吗?配置名应该是exename.exe.config,应用程序名应该是exename.exe.Hi@ChaturvediDewashish我更新了我的问题,谢谢你的帮助。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            if(args.Length>0)
                Application.Run(new Form1(args[0]));
            else
            Application.Run(new Form1());
        }
    }
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private string p;

        public Form1()
        {
            InitializeComponent();



        }

        public Form1(string filePath):this()
        {
            MessageBox.Show("Loading file "+ filePath);
            CheckForAllowed(filePath);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            openFileDialog1.Multiselect = false;
            DialogResult dr=  openFileDialog1.ShowDialog();

            if (dr == System.Windows.Forms.DialogResult.OK)
                CheckForAllowed(openFileDialog1.FileName);

        }

        private void CheckForAllowed(string filePath)
        {
            string appSetting = ConfigurationManager.AppSettings["ExtensionSupported"];
            MessageBox.Show("Allowed file types are " + appSetting);
            string[] allowedFileTypes = appSetting.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

            string fileExtesnsion = filePath.Substring(filePath.LastIndexOf('.')+1).Trim();



            if (allowedFileTypes.Contains(fileExtesnsion))
                label1.Text = "Allowed";
            else
                label1.Text = "Not allowed";
        }

    }
}