Tag: .net

通过TcpClient(byte )发送包含特殊字符的字符串

我正在尝试通过TcpClient(byte [])发送包含特殊字符的字符串。 这是一个例子: 客户在文本框中输入“amé” 客户端使用特定编码将字符串转换为byte [] (我已经尝试了所有预定义的加上一些像“iso-8859-1”) 客户端通过TCP发送byte [] 服务器接收并输出使用相同编码重新转换的字符串(到列表框) 编辑: 我忘了提到结果字符串是“我?”。 编辑-2(根据要求,这里是一些代码): @DJKRAZE这里有一些代码: byte[] buffer = Encoding.ASCII.GetBytes(“amé”); (TcpClient)server.Client.Send(buffer); 在服务器端: byte[] buffer = new byte[1024]; Client.Recieve(buffer); string message = Encoding.ASCII.GetString(buffer); ListBox1.Items.Add(message); 列表框中显示的字符串是“am?” ===解决方案=== Encoding encoding = Encoding.GetEncoding(“iso-8859-1”); byte[] message = encoding.GetBytes(“babé”); 更新: 只需使用Encoding.Utf8.GetBytes(“ééé”); 奇迹般有效。

如何在不使用对话框的情况下在C#项目中为MySQL数据库设置连接字符串?

注意:显然,MySQL连接器安装未在对话框中自动显示以添加数据源的原因是因为 Visual 2008 Express Edition 不允许在Visual Studio IDE中进行“第三方集成”。 因此,这使得手动设置数据源变得更加重要,因为MySQL连接器中的集成工具不存在。 我的目标是使用Entity Framework(ADO.NET实体数据模型)建立与MySQL数据库的连接。 我对所有的向导和对话框感到沮丧,我仍然无法找到我正在寻找的东西。 这就是我到目前为止所做的:我刚刚在我的机器上安装了MySQL .NET Connector v6.1.3(据我所知,它已经正确安装。它显示在控制面板的“添加/删除程序”中)。 在Visual Studio(带有SP1的entity framework版本的Visual C#2008 Express Edition SP1)中,单击以添加对项目的引用,单击“ADO.NET实体数据模型”,这会将我带到一个屏幕,询问“该模型应该包含什么?“ 我选择“从数据库生成”,然后单击“下一步”。 这个屏幕问我应该使用哪种数据连接。 我点击“新建连接”并获得如下所示的屏幕: 我刚刚安装的ADO.NET MySQL Connector的选项在哪里? 我知道在哪里可以找到 MySQL 的连接字符串 ,但我无法弄清楚如何将它放入我的应用程序以便Visual Studio识别它,使用ADO.NET连接器,并允许我选择该连接来创建实体模型。 如何实现这一目标?

如何通过WebSocket发送更大的消息?

我正在用C#开发一个WebSocket服务器,我注意到使用send()方法来自浏览器(在这种情况下是Chrome)的所有消息都是126个字符长度最大值。 它总是发生在我想要发送大于126个字符的消息时,看起来协议会切断大于126个字符的消息并仅传输前126个字符。 我试图检查协议定义,但没有找到任何答案。 所以,我的问题是,我可以通过WebSockets发送更大的消息吗? 更新:这是我在C#WebSocket服务器中解析来自客户端(Chrome)的消息的方式: private void ReceiveCallback(IAsyncResult _result) { lock (lckRead) { string message = string.Empty; int startIndex = 2; Int64 dataLength = (byte)(buffer[1] & 0x7F); // when the message is larger then 126 chars it cuts here and all i get is the first 126 chars if (dataLength > 0) { if (dataLength […]

是否可以更新使用Syncfusion的DocIO lib生成的Word文档的TOC(TableOfContents)?

我们的应用程序使用Syncfusion的DocIO库生成Word文档。 基本上,我们加载模板并在其中插入特定书签中的特定文本,生成用户即时下载的Word文档。 我们面临的问题是: 该模板长4页,具有TOC。 随着我们添加内容,页面中的文档大小增加(自然) 下载文档时,TOC仍会反映模板中使用的页码。 换句话说,用户必须手动更新TOC(辅助点击 – >更新字段)才能刷新页码。 根据Syncfusion的文档(很少……),使用他们的lib是不可能的。 因此,我们在模板中实现了一个AutoOpen宏,当打开文档作为变通方法时,它会更新TOC。 但是,这会在打开文件时导致安全警告(因为宏),这使我们的使用感到不舒服。 你们有没有想过改进这个实现? 谢谢,

无法加载文件或程序集Microsoft.ServiceModel.DomainServices.Hosting

我在我的本地环境中加载了一个应用程序。 这是我inheritance的代码库,根本没有让它工作。 此时,当我在浏览器中导航到“http://test.myapp.com:75/”时,收到以下错误: 描述:处理为此请求提供服务所需的配置文件时发生错误。 请查看下面的具体错误详细信息并相应地修改配置文件。 分析器错误消息:无法加载文件或程序集“Microsoft.ServiceModel.DomainServices.Hosting,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其依赖项之一。 该系统找不到指定的文件。 我已检查并validation我已加载RIA数据服务。 我可以在C:\ Program Files(x86)\ Microsoft SDKs \ RIA Services \ v1.0 \ Libraries \ Server中看到这些文件。 有趣的是,此目录中的程序集未加载到我的GAC中。 我已经尝试将它们加载到我的GAC中,但是,我无法将程序集拖到C:\ Windows \ assembly中,并且在我尝试时没有显示错误。 我究竟做错了什么?

在.Net 4.5中使用async / await编写multithreading方法

我有一个小问题。 我承认在.Net 4.5之前我没有使用multithreading,但是使用新的async/awaitfunction我决定尝试一下。 我开始尝试它,一切似乎都很好,但我无法在网络上的任何地方找到解决我的“问题”的方法。 所以每个人都解释了如何将await用于.Net平台的新转换方法(例如WriteAsync() , ReadAsync()等…),但是如果我想将它用于我自己的方法呢? 例如,假设我正在执行一项非常昂贵的计算,并且希望我的所有4个内核都在使用它。 我会有类似的东西: async Task DoLotsOfWork(T[] data, int start, int end) { //Do very expensive work } 但由于我没有await关键字,因此该方法仅被视为同步关键字。 我想从外面调用它4次,以便它可以在我的所有内核上运行,同时我向用户显示一些合理的东西(例如“Please wait …”)。 我能够找到的唯一解决方案是添加await Task.Yield(); 在方法的开头。 像这样的东西: async Task DoLotsOfWork(T[] data, int start, int end) { await Task.Yield(); //Do very expensive work } 在这种情况下,该方法将按照我的预期行事。 但是有更好的解决方案吗? 我觉得应该比编写完整的代码行更容易/更明智。 我知道我可以创建一个Task/Thread对象并调用Start()方法,但这需要更多的工作。 我只是认为使用新的异步/等待function这种事情会更容易。

Owin Middleware在服务器上产生404

我有一个owin中间件,它在我的开发机器上的IIS7上工作(win7)。 但是当部署到2008服务器时,页面返回404 我像这样连接中间件 public static class AppBuilderExtensions { public static void InitTemplateStore(this IAppBuilder app, string templatePath, string fileMask) { TemplateStoreMiddleware.Init(templatePath, fileMask); app.Map(“/templates”, subApp => subApp.Use()); } } 可以在此处找到使用中间件的代码 https://github.com/AndersMalmgren/Knockout.Bootstrap.Demo 该站点作为IIS上默认网站下的虚拟应用程序托管 编辑:我是否需要添加默认角色之外的任何角色? IIS正在使用StaticFile处理程序,其中offcourse是错误的,为什么会发生这种情况? Module IIS Web Core Notification MapRequestHandler Handler StaticFile Error Code 0x80070002 Requested URL http://localhost:80/knockout.bootstrap.demo/templates?root=shared Physical Path C:\inetpub\knockout.bootstrap.demo\templates Logon Method Anonymous Logon User Anonymous

从HttpWebRequest / Response获取底层tcp连接

我正在尝试获取有关当我连接到比HttpWebRequest和HttpWebResponse给我更低级别的网站时发生的事情的更多信息。 我正在使用C#。 我希望能够看到有关dns查找的信息以及建立连接所花费的时间(如果建立了新连接)。 HttpWebRequest和HttpWebResponse工作在比这更高的级别,我想询问是否有获取底层TcpClient对象(或他们使用的任何低级别对象)的方法。 如果不可能,那么有没有办法获取和操作.net维护的连接列表,而不通过HttpWebRequest或HttpWebResponse获取它? 我无法更改我正在使用TcpClient的应用程序,因为可靠地实现所有http内容太费时间了。

entity framework和事务隔离级别

我正在使用Entity Framework 4.0。 现在我需要限制对表的访问,当我从中读取或写入它时。 可能是关于事务隔离级别的。 我怎么做? 更新 这就是我所拥有的 using (var db = new MyDb()) { using (TransactionScope scope = new TransactionScope()) { var item = db.MyItems.Single(x => x.Id == 5); item.Price = 12; db.SaveChanges(); scope.Complete(); } } 但是,当我在内部任何一行using (TransactionScope scope断点时using (TransactionScope scope ,当我停在那里然后我转到Sql Server Management Studio并从一个在内部使用的表中进行选择查询(甚至更新!))事务,我出于某种原因没有收到错误。但为什么呢?它不能让我在执行事务时读取数据。

线程在锁定FIFO上等待吗?

假设我有以下代码 static class … { static object myobj = new object(); static void mymethod() { lock(myobj) { // my code…. } } } 然后让我们说当thread1有锁定时,thread2尝试运行mymethod。 是否会等待释放锁定或抛出exception? 如果它确实等待,是否确保订单,以便如果其他线程进入它们是FIFO?