如何使用C#识别文件的扩展名/类型?

我有一个工作流程,允许用户上传任何文件,然后将读取该文件。 现在我的问题是,如果用户有图像文件xyz.jpg并且他只将其重命名为xyz(扩展已删除),我们仍然可以使用/读取文件数据/元数据获取文件的类型/扩展名。 谢谢大家

我是否需要在引用类型上覆盖GetHashCode()?

我在StackOverflow上阅读了关于GetHashCode大多数问题。 但我仍然不确定是否必须在引用类型上覆盖GetHashCode 。 我从另一个问题的某些人那里得到了以下答案: Object.GetHashCode()使用System.Object类中的内部字段来生成哈希值。 创建时,为每个创建的对象分配一个唯一的对象键,存储为整数。 这些键从1开始,每次创建任何类型的新对象时都会递增。 如果在.NET Framework 3.5中仍然如此(有人可以确认吗?),那么我在参考类型的默认实现中看到的唯一问题是哈希代码的分布很差。 我会打破我的问题: a)所以它建议覆盖GetHashCode ,如果它在Dictionary或者默认实现是否正常? b)我有很容易做的引用类型,因为它们有唯一标识它们的字段但是那些所有成员也是引用类型的引用类型。 我该怎么办?

Azure Active Directory与MVC,客户端和资源标识相同的应用程序

跟进这个问题: 如何在ASP.NET MVC上执行Azure Active Directory单一登录和表单身份validation 我尝试在默认MVC 4的Login操作上编写简单代码,它使用默认的Forms身份validation和Azure Active Directory SSO: public async Task Login(LoginModel model, string returnUrl) { if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe)) { return RedirectToLocal(returnUrl); } authContext = new AuthenticationContext(authority, new TokenCache()); var result = await authContext.AcquireTokenAsync(resourceId, clientId, new UserCredential(model.UserName, model.Password)); // more code } 因此,如果正常的登录WebSecurity.Login不成功,我尝试通过使用带有凭据(用户名/密码)的ADAL.NET从AAD获取令牌: http ://www.cloudidentity.com/blog/2014/07 / 08 /使用阿达尔网到身份validation用户-通usernamepassword / […]

WPF TextFormatter中第二行的缩进

我正在使用TextFormatter制作WPF文本编辑器。 我需要在每个段落中缩进第二行。 第二行中的缩进宽度应该类似于第一行上第一个单词的宽度,包括第一个单词后面的空格。 像这样的东西: Indent of second line in Indentation Inde second line in Indentation Indenta of second line in Indentation of second l ine in Indentation of second line in Inde ntation of second line in 第二件事:段落的最后一行应该在中心。 如何实现这一目标? 提前致谢!!

Enumerable.Sum()溢出

嘿,我正在使用LINQ的Enumerable.Sum()扩展方法来计算哈希码,并且在代码变大时遇到OverflowExceptions问题。 我尝试将调用置于unchecked块中,但这似乎没有帮助。 该方法的MSDN文档说,如果值太大,它将抛出,但我检查了reflection器,这就是: public static int Sum(this IEnumerable source) { if (source == null) { throw Error.ArgumentNull(“source”); } int num = 0; foreach (int num2 in source) { num += num2; } return num; } 根据这个反编译,我希望它可以溢出或不取决于调用代码的上下文。 为什么它会溢出,我怎么能让它停止?

如何在VS2017 RC中使用新的异步语义?

从Visual Studio 2017 RC发行说明引用 语言扩展和分析器 此版本包括一些我们正在为下一版本的C#和Visual Basic工作的新语言扩展。 默认情况下启用这些新语言function,包括: 对于C#: 异步方法的类似任务的返回类型 :这引入了从异步方法返回任何类似任务类型的能力。 以前这些返回类型被约束为Task和Task 。 它说它默认启用,但我无法让它工作。 甚至从链接的Github页面下载精确的ArbitraryAsyncReturns.zip(并修复对React NuGet包的引用以删除不相关的错误),但是没有安装自定义VSIX包(用于VS2015),我继续得到 错误CS1983:异步方法的返回类型必须为void,Task或Task 我是否需要采取任何额外步骤才能使其正常工作? 我首先尝试将该特定示例缩减为应该起作用的最小版本,但尝试使用它,我还不知道应该起作用什么,不应该起作用。 至少,鉴于这种语言增强,我期待一个虚假的程序,如 struct Test { } static class Program { static async Test Test() { } static void Main() { } } 无法使用不同的错误消息进行编译。 获得相同的错误消息,甚至提示此语言扩展尚未启用,但JaredPar注意到错误消息尚未更新。 我现在将一个所谓的有效示例减少到我认为应该编译的最小版本(但由于未实现的方法而在运行时失败),但是不编译: using System; using System.Runtime.CompilerServices; using System.Threading.Tasks; namespace System.Runtime.CompilerServices { public class TasklikeAttribute […]

C# – 类的通用HashCode实现

我正在研究如何为类构建最好的HashCode,我看到了一些算法。 我看到了这一个: Hash Code实现 ,似乎是.NET类的HashCode方法是类似的(参见反映代码)。 所以问题是,为什么不创建上面的静态类来自动构建HashCode,只需传递我们认为是“键”的字段。 // Old version, see edit public static class HashCodeBuilder { public static int Hash(params object[] keys) { if (object.ReferenceEquals(keys, null)) { return 0; } int num = 42; checked { for (int i = 0, length = keys.Length; i < length; i++) { num += 37; if (object.ReferenceEquals(keys[i], null)) […]

C#:从Windows桌面应用程序打开浏览器并POST到URL

我有一个小型的WPF应用程序(虽然我认为无论是wpf表单还是webform应用程序并不重要?)我想要启动一个新的浏览器窗口并POST到特定的URL。 我一直在搞乱: System.Diagnostics.Process.Start(“http://myurl.com”); 启动窗口,但我不认为我可以使用相同的过程实际发布到url…我也尝试过HttpWebRequest,但我希望用户能够在我发布到之后使用该应用程序这个url,不只是向他们展示结果……我能看到什么才能做到这样的事情?

entity framework连接字符串麻烦

我正在制作一个小型库(DLL)来管理用户及其角色/权限。 该计划是能够将此dll添加到MVC项目并能够操纵用户/角色/等。 所有数据都驻留在SQL数据库中。 我正在使用entity framework进行数据访问。 所以当我初始化一个新的RoleManager(这是我正在制作的lib中的主类的名称)时,我提供了一个connectionString,如下所示: RoleManager roleManager = new RoleManager(string connectionString); 然后在构造函数中我这样做: db = new RoleManagerEntities(connectionString); //This is the EntityFramework 我正在尝试提供此连接字符串(以及许多其他字符串) “metadata=res://*/RoleManager.csdl|res://*/RoleManager.ssdl|res://*/RoleManager.msl;provider=System.Data.SqlClient;provider connection string=’Data Source=localhost;Initial Catalog=Login;Integrated Security=True;Connection Timeout=60; multipleactiveresultsets=true'” 我收到以下错误: The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid. 这个问题是我试图从我的新项目中实例化EF而不提供连接字符串并且我的应用程序配置中没有任何内容的默认值。 […]

使用现有表进行代码优先迁移

在我的模型中,我有导航属性语言: public class IntegratorDescription : BaseContract { [Key, Column(TypeName = “bigint”), DataMember] public long Id { get; set; } [DataMember, Column(TypeName = “bigint”), ForeignKey(“Language”)] public long LangId { get; set; } [DataMember] public string CompanyShortInfo { get; set; } [DataMember, Column(TypeName = “ntext”)] public string CompanyInfo { get; set; } public virtual Models.Language Language { […]