小编Ton*_*Nam的帖子

无法找到请求的.Net Framework数据提供程序 - SQLite

我认为sqlite很简单,但它让我很难过.我只想创建一个应用程序,我可以使用ado.net实体数据类连接到sqlite数据库.

我在运行Windows XP的虚拟计算机上测试应用程序时遇到此问题.当我部署它们时,应用程序在我当前的计算机上以及在我的笔记本电脑上运行正常

以下是虚拟计算机上发生的情况:

  • 该应用程序能够启动.
  • 应用程序能够使用System.Data.SQLite与数据库进行交互
  • 应用程序无法使用ADO.NET Entity数据模型连接到数据库

当我尝试连接时,我得到以下异常:

在此输入图像描述

在此输入图像描述

我知道有很多帖子都在谈论这个,大多数人说你需要为Sqlite下载.NET提供程序.

我已经安装了sqlite-netFx40-setup-bundle-x86-2010-1.0.79.0.exe,我遇到了同样的问题.我该怎么办?


编辑

我设法通过添加以下内容来建立连接:

<system.data>
 <DbProviderFactories>
  <remove invariant="System.Data.SQLite"/>
  <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite"
  type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
Run Code Online (Sandbox Code Playgroud)

到我的app.config文件.

问题是现在我无法选择数据也不能将记录插入数据库.我尝试插入新记录时遇到的例外情况是:

在类型为"System.Data.SQLite.SQLiteFactory"的商店提供程序实例上调用"GetService"方法后返回null.商店提供商可能无法正常运行.

在此输入图像描述

c# sqlite deployment ado.net

21
推荐指数
1
解决办法
2万
查看次数

如何压缩JSON响应

我使用了很多ajax调用来查询数据库,我得到大文本(json)响应.我想压缩回复.

Gzip的JavaScript实现中,有一种使用javascript压缩文本的好方法.

问题是我想在我的aspx服务器上压缩响应并用javascript对其进行解压缩.因此我需要lzw_encode在我的asp.net服务器上运行该函数.II应该将该功能转换为C#还是有另一种方式?

如果您不想配置IIS或更改标题,请使用上面的链接,您可以使用以下命令压缩服务器上的代码:

C#

    public static string Compress(string s)
    {
        var dict = new Dictionary<string, int>();
        char[] data = s.ToArray();
        var output = new List<char>();
        char currChar;
        string phrase = data[0].ToString();
        int code = 256;

        for (var i = 1; i < data.Length; i++){
            currChar = data[i];
            var temp = phrase + currChar;
            if (dict.ContainsKey(temp))                
                phrase += currChar;                
            else
            {
                if (phrase.Length > 1)                    
                    output.Add((char)dict[phrase]);                    
                else                    
                    output.Add((char)phrase[0]);                    
                dict[phrase + currChar] = code;
                code++;
                phrase = …
Run Code Online (Sandbox Code Playgroud)

javascript c# compression asp.net

19
推荐指数
1
解决办法
2万
查看次数

比较datetime而不是毫秒

我需要在两个单独的列表中比较日期.每个列表都由MyFile对象构成.这是我创建的一个类,用于获取有关文件的特定信息,例如name,dateModified,extension等.唯一的问题是我的第二个列表中的很多MyFiles对象(从外部硬盘驱动器获取)没有将dateTime标记(LastWriteTime)保留到毫秒.我相信这就是为什么我的比较不起作用的原因.例如,这里是我的比较失败的一个例子:"为什么c#认为日期不相等?" 调试

a和b是MyFile对象,MyFile类包含一个属性ticks,它等于file.LastWriteTime.Ticks它们没有在我刚刚包含它们的程序中用于调试目的.因此,经过多次调试后,我意识到最后7位代表文件的毫秒数.因此,我在MyFile中的ticks属性现在包含11个有效数字而不是18个(注意18-11 = 7).这个问题是,当我比较滴答时,当我尝试通过除以10000000然后多打10000000来更新ticks属性时,我得到奇怪的结果.因为我的ticks propery是一个long int,它将丢失最后7位数当我划分.我得到的'错误'更少.但是有一些其他时候我得到这样的东西: 在此输入图像描述

在这里我们可以看到日期至少相同,直到第二个.为什么c#认为它不是同一个日期?我是否必须创建自己的"Ticks"功能?我知道我将dateTime转换为字符串然后比较它但我想知道一个对象a.dateModified是否比对象b.dateModified更新的可能性

c# datetime

17
推荐指数
1
解决办法
1万
查看次数

MemoryStream有一个线程写入它和另一个读取

这是我写入流然后使用1个线程从它读取的方式:

        System.IO.MemoryStream ms = new System.IO.MemoryStream();

        // write to it
        ms.Write(new byte[] { 1, 2, 3, 4, 5, 6, 7 }, 0, 7);

        // go to the begining
        ms.Seek(0, System.IO.SeekOrigin.Begin);

        // now read from it
        byte[] myBuffer = new byte[7];
        ms.Read(myBuffer, 0, 7);
Run Code Online (Sandbox Code Playgroud)

现在我想知道是否可以从一个线程写入内存流并从单独的线程中读取该流.

c# multithreading memorystream stream

17
推荐指数
1
解决办法
7305
查看次数

无法访问本地网络上的wamp服务器

我想在我的本地网络上托管一个网站.出于某种原因,我只能访问本地计算机中的wamp.

我的网络中有2台电脑.计算机A和计算机B都安装了wamp服务器.当我从计算机BI键入计算机A的IP地址时,我能够连接到它.但是,当我这样做时,反过来它不起作用!换句话说,当我从计算机A输入计算机B的IP地址时,浏览器会说:服务器在192.168.0.120需要很长时间才能响应.

我为了解决计算机B上的问题而做的事情:(记得我想从计算机A连接到计算机B)

1)关闭防火墙

2)卸载wamp并重新安装.

3)关闭反病毒.

4)关闭Windows防火墙

5)在线放置wamp并在线上线后重启所有服务

完成所有这些步骤后,我仍然无法从计算机B连接到它!

我没有查找任何ini文件加上我已经卸载并重新安装它,所以为什么不能连接到它!?我在过去3年里使用过wamp而且我从未经历过这个.

wamp也是我在这台计算机上安装的唯一Web服务器.我的计算机上没有安装IIS或任何其他Web服务器.

apache wamp

16
推荐指数
4
解决办法
10万
查看次数

正则表达式匹配不在引号中的关键字

我如何能够查找不在字符串中的kewords.

例如,如果我有文字:

你好,这个文字就是一个例子.

bla bla bla"这个文字在一个字符串里面"

"随机字符串"更多文字bla bla bla"foo"

我希望能够匹配所有text不在里面的单词" ".在其他我想匹配:

在此输入图像描述

注意我不想匹配红色突出显示的文本,因为它在字符串中


可能的方法:

我一直在努力,这是我到目前为止:

(?s)((?<q>")|text)(?(q).*?"|)

请注意,正则表达式使用if语句:(?(谓词)true替换| ​​false替代)

所以正则表达式会读:

找到"或文字.如果你找到"然后继续选择,直到你找到"再次(.*?"),如果你找到文字,然后什么都不做......

当我运行该正则表达式时,我匹配整个字符串.我问这个问题是为了学习.我知道我可以删除所有字符串然后寻找我需要的东西.

c# regex parsing

16
推荐指数
2
解决办法
9701
查看次数

UDP打孔.让服务器与客户交谈

我一直在阅读很多关于如何实现UDP打孔的内容但是出于某些原因我无法使其工作.

对于那些不熟悉udp打孔的人来说,这是我自己的定义:

目标是能够在服务器的帮助下在两个客户端(客户端A和客户端B)之间传输数据.因此,客户端A连接到服务器并发送其信息.客户B也这样做.服务器具有必要的信息,以便客户端A能够向客户端B发送数据,反之亦然.因此,服务器将该信息提供给两个客户端.一旦两个客户端都有关于彼此的信息,就可以在没有服务器帮助的情况下开始在这些客户端之间发送和接收数据.

我的目标是能够做我刚才描述的(udp打孔).在此之前,我认为能够从服务器连接到客户端会很有帮助.为此,我计划向服务器发送有关客户端的信息.一旦服务器收到该信息尝试从头开始连接到客户端.一旦我能够执行,我应该拥有开始实现真正的udp打孔所需的一切.

以下是我设置的方法:

在此输入图像描述

顶级路由器的服务器和底部路由器连接到LAN端口.底部路由器(NAT)通过其WAN端口连接到顶级路由器.并且客户端计算机连接到底部路由器到其LAN端口之一.

因此,在该连接中,客户端能够看到服务器,但服务器无法看到客户端.

所以我在伪代码中完成的算法是:

  • 客户端连接到服务器.
  • 客户端将一些UDP包发送到服务器以打开NAT上的某些端口
  • 将信息发送到服务器上客户端正在侦听的端口.
  • 一旦服务器收到该信息尝试从头开始连接到客户端.

这是代码中的实现:

服务器:

static void Main()
{     
    /* Part 1 receive data from client */
    UdpClient listener = new UdpClient(11000);
    IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, 11000);
    string received_data;
    byte[] receive_byte_array = listener.Receive(ref groupEP);       
    received_data = Encoding.ASCII.GetString(receive_byte_array, 0, receive_byte_array.Length);

    // get info
    var ip = groupEP.Address.ToString();
    var port = groupEP.Port;

    /* Part 2 atempt to connect to client from scratch */
    // now atempt to send data to …
Run Code Online (Sandbox Code Playgroud)

c# sockets networking udp hole-punching

16
推荐指数
2
解决办法
1万
查看次数

将现有的xaml文件添加到visual studio 2012

我想将包含xaml和cs文件以及其他目录的文件夹添加到VS上的其他项目中.出于某种原因,当我将文件夹从Windows资源管理器拖到我想要放置该目录的项目时,visual studio不会让我.因此我手动添加每个文件,每次遇到目录时都要创建它.也许是因为我正在使用团队基础服务器.

无论如何我手动添加文件所以我点击我要在visual studio上添加文件的文件夹然后点击添加现有文件.然后我选择xaml和代码隐藏文件:

在此输入图像描述

当我点击添加文件时添加但Visual Studio无法识别Bytes.xaml.cs是背后的代码!

在此输入图像描述

我是否必须手动添加窗口然后复制并粘贴文件的内容?

code-behind visual-studio-2012

16
推荐指数
2
解决办法
6266
查看次数

使用javascript将二进制数据转换为base64

HTML5使您能够在本地存储数据,我认为这很棒.例如,以下是如何使用它:

        var store = window.localStorage;
        store.setItem('foo', "hellow world");
        var test = store.getItem('foo');
        // test should = "hellow world"
Run Code Online (Sandbox Code Playgroud)

在html中,您可以通过settig动态显示图像来源:

     "data:image/jpg;base64," + (base64string)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何将二进制数据转换为base64字符串,以便我可以利用html5本地存储?

例如,如果我能够:

$.ajax({
   url: 'someImage.png',
   type: 'POST',
   success: function (r) {

                // here I want to convert r to a base64 string !
                // r is not binary so maybe I have to use a different approach
                var data = ConvertToBase64(r);



                document.getElementById("img").src = "data:image/png;base64," + data;
            },
});
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过使用html5将图像包裹在画布上然后将其转换为base64string来解决此问题.我也可以在服务器上发送一个特定的服务,该服务将发送该图像的base64字符串数据(someImage.aspx).我只想知道是否可以从服务器检索二进制数据并将其转换为base64字符串.

javascript html5 base64

15
推荐指数
4
解决办法
6万
查看次数

如何使用/安装GNU binutils(objdump)

我需要在我的应用程序中使用objdump和readelf命令在Windows上运行.我知道我可以安装cygwin以便使用它们.我之所以不想使用cygwin是因为我想让它的文章部署.另外我不知道如何安装cygwin.因此,我认为我需要的是GNU Utilities For Win32,因为链接声明这些库是无服务器的."可执行文件仅依赖于Microsoft C-runtime(msvcrt.dll),而不依赖于Cygwin工具提供的仿真层"

无论如何,一旦我去那个链接,我不知道如何安装它.具体来说,我想使用>这个工具<

如果有人可以指出我将如何在我的应用程序中使用objdump和readelf(binutils in cygwin),我将不胜感激.

windows cygwin gnu objdump binutils

15
推荐指数
1
解决办法
4万
查看次数