我在SQL Server 2005中索引PDF文件时遇到了一个奇怪的问题,希望有人可以提供帮助.我的数据库有一个名为MediaFile的表,其中包含以下字段:MediaFileId int identity pk,FileContent image和FileExtension varchar(5).我的Web应用程序在此表中存储文件内容没有任何问题,并且能够在doc,xls等上使用全文搜索而没有任何问题 - 唯一无法正常工作的文件扩展名是PDF.在此表上执行全文搜索时,我知道在表中保存的PDF文件中存在的单词,这些文件不会在搜索结果中返回.
操作系统是Windows Server 2003 SP2,我安装了Adobe iFilter 6.0.按照此博客条目上的说明,我执行了以下命令:
exec sp_fulltext_service 'load_os_resources', 1;
exec sp_fulltext_service 'verify_signature', 0;
Run Code Online (Sandbox Code Playgroud)
在此之后,我重新启动了SQL Server,并通过执行以下命令验证是否正确安装了PDF扩展的iFilter:
select document_type, path from sys.fulltext_document_types where document_type = '.pdf'
Run Code Online (Sandbox Code Playgroud)
这将返回以下信息,看起来是正确的:
document_type:.pdf
路径:C:\ Program Files\Adobe\PDF IFilter 6.0\PDFFILT.dll
然后我(重新)在MediaFile表上创建了索引,选择FileContent作为索引列,将FileExtension作为其类型.该向导将创建索引并成功完成.为了测试,我正在执行这样的搜索:
SELECT MediaFileId, FileExtension FROM MediaFile WHERE CONTAINS(*, '"house"');
Run Code Online (Sandbox Code Playgroud)
这将返回包含此术语但不包含任何PDF文件的DOC文件,但我知道表中肯定有PDF文件包含单词house.
顺便说一句,我让这个工作了几分钟,上面的搜索返回了正确的PDF文件,但后来它没有明显的原因再次停止工作.
有关什么可以阻止SQL Server 2005索引PDF的任何想法,即使安装了Adobe iFilter并且似乎已加载?
我是消息传递的新手,目前正在调查使用RabbitMQ作为我们系统架构的一部分,以提供不同服务之间的消息传递.我有一个基本的RabbitMQ示例工作,它可以通过总线传输基本文本消息.看起来EasyNetQ可能只是使用RabbitMQ的一些复杂性,尽管我在使用它时遇到了一些麻烦.
我想发送一个由以下类表示的更高级的消息,而不仅仅是一个字符串:
public class Message
{
public string Text { get; set; }
public int RandomNumber { get; set; }
public DateTime Date { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我试图通过将其发布到队列来发送它,然后让订阅者从队列中取出它.我的代码如下:
出版者
using (var bus = RabbitHutch.CreateBus("host=localhost"))
{
var message = new Message() { Text = "Hello World", RandomNumber = new Random().Next(1,100), Date = DateTime.Now };
bus.Publish<Message>(message);
}
Run Code Online (Sandbox Code Playgroud)
接收器
using (var bus = RabbitHutch.CreateBus("host=localhost"))
{
bus.Subscribe<Message>("test", m => Console.WriteLine(string.Format("Text: {0}, RandomNumber: {1}, Date: {2}", m.Text, m.RandomNumber, …
Run Code Online (Sandbox Code Playgroud) 我正在使用jQuery UI sortables插件来允许重新排序某些列表项.在每个列表项中,我有几个单选按钮,允许启用或禁用该项.
当拖动项目时,两个单选按钮都被取消选择,这似乎不应该发生.这是正确的行为,如果没有,解决这个问题的最佳方法是什么?
以下是演示此问题的代码示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>jQuery Sortables Problem</title>
<script src="jquery-1.2.6.min.js" type="text/javascript"></script>
<script src="jquery-ui.min.js" type="text/javascript"></script>
<style type="text/css">
.items
{
margin-top: 30px;
margin-left: 0px;
padding-left: 25px;
cursor: move;
}
.items li
{
padding: 10px;
font-size: 15px;
border: 1px solid #666;
background: #eee;
width: 400px;
margin-bottom: 15px;
float: left;
clear:both;
}
</style>
</head>
<body>
<ol id="itemlist" class="items">
<li id="1" class="item">
Item 1
<input name="status_1" type="radio" value="1" checked="checked" />enabled
<input …
Run Code Online (Sandbox Code Playgroud) jquery drag-and-drop jquery-ui radio-button jquery-ui-sortable
我正在尝试使用HttpHandler从一个ASP.NET Web应用程序将QuickTime视频流式传输到iPhone.从IIS 5.1(Windows XP)托管Web应用程序时,视频播放器将打开,然后显示错误"服务器未正确配置".但是,使用IIS 7.5(Windows 7)时,视频播放正常.
生产环境正在运行IIS 6.0并且存在同样的问题,尝试通过Mobile Safari在iPhone上播放视频会显示上述错误.
我检查了Http Headers,它们在两个服务器之间看起来几乎是相同的(除了一些,比如Server头,显然会有所不同),除了它们以不同的顺序出现,尽管我怀疑这个造成了这个问题.
根据Google网上论坛上的这个帖子,添加'Accept-Ranges:bytes'标题会有所帮助,尽管这对我们没有任何影响.我还添加了ETag标题,没有任何运气.
实际负责发送文件的代码如下所示:
Context.Response.Buffer = true;
Context.Response.ContentType = "video/x-m4v";
Context.Response.AppendHeader("Content-Disposition", "filename=\"Video.m4v\"");
Context.Response.AppendHeader("Content-Length", "23456789");
Context.Response.AppendHeader("Accept-Ranges", "bytes");
Context.Response.AppendHeader("ETag", GetETag(path));
Context.Response.TransmitFile(path);
Run Code Online (Sandbox Code Playgroud)
传输文件的上述代码似乎运行正常,视频文件在所有桌面浏览器中以及在Windows 7上从IIS 7.5托管时正确播放.只有在尝试使用Mobile Safari在iPhone上播放视频文件时才会出现此问题.上面的代码,ASP.NET Web应用程序托管在IIS 5.1或IIS 6.0上.
有没有其他人经历过这样的事情,并对我能做些什么来获得这个工作有任何想法?
我正在尝试将我的网站部署到我的托管服务提供商并不断收到以下错误:
无法加载文件或程序集“System.Web.Razor”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)
[FileLoadException: 无法加载文件或程序集“System.Web.Razor”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)]
[FileLoadException:无法加载文件或程序集“System.Web.Razor,版本=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)]
...
[ConfigurationErrorsException: 无法加载文件或程序集“System.Web.Razor,版本=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)]
...
[HttpException (0x80004005): 无法加载文件或程序集“System.Web.Razor,版本=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)]
...
该站点是使用 ASP.NET 4 和 MVC 4 构建的。在运行 Windows 8 的开发机器上一切正常。我已将 System.Web.Razor.dll 复制到服务器上的 bin 文件夹中,这没有任何区别,尽管这似乎是 v1.0 版本的程序集 (~260k)。
我看过
C:\Windows\Assembly并且没有看到任何专门针对 System.Web.Razor 的内容。但是,我确实有以下两个文件:
C:\Windows\assembly\NativeImages_v4.0.30319_64\System.Web.Razor\04eb82505c0086e8eb097d1408183aa0\System.Web.Razor.ni.dll(776k,文件版本:1.0.207105.44)
C:\Windows\assembly\NativeImages_v4.0.30319_64\System.Web.Razor\ab032b45c588b488ebca535054d827bc\System.Web.Razor.ni.dll(1823k,文件版本:2.0.20715.0)
但是,即使从这里复制 v2 程序集也不起作用,尽管我认为这无论如何都不是正确的文件,因为 v1 程序集文件大小也不匹配。
关于这里发生了什么的任何想法?
我猜我的托管服务提供商没有安装任何东西(因为他们一直告诉我把所有东西都放在 bin 文件夹中),但我很好奇为什么我找不到这个 System.Web.Razor v2 DLL任何地方。
为了调试,我还上传了带有基本模板的空网站,效果很好。有趣的是,当我添加对Postal的引用并再次部署时,我收到了错误 - 但即使我将文件恢复回来,错误仍然存在!为什么会发生这种情况?
任何帮助,将不胜感激。开始觉得有点想不通了。
编辑 1
创建了一个新的空项目,从nuget中添加了Razor 2,将System.Web.Razor.dll设置为复制本地(2.0.20715.0,260k),发布,抓取文件并上传它,仍然出现相同的错误?似乎这个 DLL 不会被选中。
编辑 2
最终我放弃了尝试使用有问题的托管服务提供商。他们没有在服务器上安装 ASP.NET MVC 4,我认为这最终是问题所在。尝试了另一个安装了这个的主机,一切正常。
我创建了c#的功能来比较我项目中的价格.
public static decimal? SpecialPrice(decimal w, decimal p)
{
if (w < p)
{
return p;
}
else if (w > p && p > 0)
{
//return (w , p);
}
else
{
return w;
}
}
Run Code Online (Sandbox Code Playgroud)
我想在w> p和p> 0时返回两个变量(w和p),但我不知道怎么能像那样返回.有人知道吗?
在索引编制时对字段应用提升而不是在构建搜索查询和执行搜索时执行此操作有什么好处?
例如,我可以在向索引添加文档时对"标题"字段应用提升,或者仅在使用类似查询进行搜索时指定提升(title:test)^10
.两者似乎都会达到同样的目的,我想知道是否有任何理由或好处以一种方式而不是另一种方式来做.
我正在尝试使用.NET中的ODBC对Oracle DB执行查询,并收到以下错误:
ORA-00933: SQL command not properly ended
Run Code Online (Sandbox Code Playgroud)
但是,SQL语句绝对正确,我可以从Oracle SQL Developer成功执行它。查询本身看起来像这样:
SELECT * FROM TABLE(SCHEMA.PKG.SPNAME('PARAMS'));
Run Code Online (Sandbox Code Playgroud)
另一个简单的查询工作正常:
SELECT COUNT(*) FROM SCHEMA.MYTABLE
Run Code Online (Sandbox Code Playgroud)
看起来与前者类似,后者在查询中使用包并导致中断。该错误表明它没有正确结束,但是它带有分号和正确的括号,因此似乎还有其他情况。
如果删除结尾的分号,则会出现错误,并且没有任何消息。
我的C#代码是基本的,看起来像这样:
using (var connection = new OdbcConnection(connectionString))
{
using (var command = connection.CreateCommand())
{
command.CommandText = commandText;
connection.Open();
var result = command.ExecuteScalar();
connection.Close();
Console.WriteLine(result);
}
}
Run Code Online (Sandbox Code Playgroud)
将Oracle库用于.NET时,当我删除结尾的分号时,它可以工作。如果我将其保留在适当的位置,则会出现有关SQL命令未正确结束的相同错误。
似乎此查询应与ODBC一起使用。我需要采取其他措施才能使其正常运行,还是使用Oracle托管数据提供程序是唯一的方法?
我正在尝试在命令行应用程序(或更准确地说,从LINQPad)中使用SolrNet来测试一些查询,并且在尝试初始化库时,我收到以下错误:
Key 'SolrNet.Impl.SolrConnection.UserQuery+Resource.SolrNet.Impl.SolrConnection' already registered in container
Run Code Online (Sandbox Code Playgroud)
但是,如果我捕获此错误并继续,ServiceLocator会给我以下错误:
Activation error occured while trying to get instance of type ISolrOperations`1, key ""
Run Code Online (Sandbox Code Playgroud)
内部异常:
The given key was not present in the dictionary.
Run Code Online (Sandbox Code Playgroud)
我的完整代码如下所示:
try
{
Startup.Init<Resource>("http://localhost:8080/solr/");
Console.WriteLine("Initialized\n");
}
catch (Exception ex)
{
Console.WriteLine("Already Initialized: " + ex.Message);
}
// This line causes the error if Solr is already initialized
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<Resource>>();
// Do the search
var results = solr.Query(new SolrQuery("title:test"));
Run Code Online (Sandbox Code Playgroud)
我在安装了Solr 3.4.0的Windows 7x64上运行Tomcat 7.
还有另一条关于 StackOverflow上同样问题的消息,尽管在Global.asax中放置Startup.Init代码的公认答案仅与ASP.NET有关. …
我在ASP.NET MVC项目中使用CsvHelper库将数据导出到CSV,并且发现导出的数据被切断,或者在较小的列表的情况下,根本没有写入数据,而我我收到一个空白的CSV文件.
我的基本控制器有一个这样的方法(由继承自此类的控制器调用以导出实体列表):
protected FileContentResult GetExportFileContentResult(IList data, string filename)
{
using (var memoryStream = new MemoryStream())
{
using (var streamWriter = new StreamWriter(memoryStream))
{
using (var csvWriter = new CsvWriter(streamWriter))
{
csvWriter.WriteRecords(data);
return File(memoryStream.ToArray(), "text/csv", filename);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
随着列表1k +项目的出口,似乎最后几个项目被切断.当项目列表小于~100时,返回的CSV文件为空白且不包含任何数据.
我已经尝试直接写入输出流而不是MemoryStream,并收到相同的结果.
还尝试删除using语句,以防流处理过早,但也没有导致任何更改.
使用此库正确创建CSV文件的正确方法是什么(即包含所有行,并且无论列表大小如何都可以工作)?
编辑
决定使用CsvHelper进行废弃,然后选择另一个名为CsvTools的库.这没有任何问题.我的代码在下面供参考.
protected FileContentResult GetExportFileContentResult(IList data, string filename)
{
using (var memoryStream = new MemoryStream())
{
using (var streamWriter = new StreamWriter(memoryStream))
{
var dt = DataTable.New.FromEnumerable(data);
dt.SaveToStream(streamWriter);
return …
Run Code Online (Sandbox Code Playgroud) 模型
public class AllControls
{
public List<Group> getChkItems { get; set; }
public bool chk { get; set; }
}
public class Group
{
public int ID { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
控制器:
[HttpGet]
public ActionResult Index()
{
List<Group> li = new List<Group>()
{
new Group() { ID = 1, Name = "C#" },
new Group() { ID = 1, Name = "Asp.NET" },
new Group() { ID = 1, Name = "SQL" …
Run Code Online (Sandbox Code Playgroud) c# ×4
search ×3
asp.net ×2
asp.net-mvc ×2
indexing ×2
solr ×2
.net ×1
api ×1
csvhelper ×1
csvtools ×1
data-access ×1
easynetq ×1
gmail ×1
hosting ×1
httphandler ×1
jquery ×1
jquery-ui ×1
linqpad ×1
odbc ×1
oracle ×1
pdf ×1
quicktime ×1
rabbitmq ×1
radio-button ×1
razor ×1
razor-2 ×1
solrnet ×1
video ×1