我们有一个应用程序将使用RabbitMQ并有几个不同的队列在层之间传递消息.
最初,我计划使用多个直接交换,每个消息类型一个,但看起来使用不同的路由键绑定与队列进行单个主题交换将实现相同的目的.
进行单次交换似乎也更容易维护,但我想知道是否有任何好处(如果有的话)以另一种方式做到这一点?
选项1,使用多个直接交换:
ExchangeA (type: direct)
-QueueA
ExchangeB (type: direct)
-QueueB
ExchangeC (type: direct)
-QueueC
Run Code Online (Sandbox Code Playgroud)
选项2,使用单一主题交换:
Exchange (type: topic)
-QueueA (receives messages from exchange with routing key of "TypeA")
-QueueB (receives messages from exchange with routing key of "TypeB")
-QueueC (receives messages from exchange with routing key of "TypeC")
Run Code Online (Sandbox Code Playgroud) 在Visual Studio 2005中创建新的ASP.NET AJAX Web应用程序时,默认的web.config包含以下部分(在编译节点内):
<assemblies>
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</assemblies>
Run Code Online (Sandbox Code Playgroud)
程序集节点是否存在似乎不会影响AJAX功能.无论Web.Config中是否包含对System.Web.Extensions的引用,更新面板等都能正常工作.
本节的目的是什么,是否可以安全删除?
使用ASP.NET流式传输文件的最佳方法是什么?
似乎有各种方法,我目前在http处理程序中使用Response.TransmitFile()方法,该方法直接将文件发送到浏览器.这用于各种事情,包括从Webroot外部发送FLV到嵌入式Flash视频播放器.
但是,这似乎不是一种可靠的方法.特别是,Internet Explorer(7)存在一个奇怪的问题,浏览器只是在观看一两个视频后挂起.单击任何链接等都没有任何效果,并且在网站上重新运行工作的唯一方法是关闭浏览器并重新打开它.
这在其他浏览器中也会发生,但更不频繁.基于一些基本的测试,我怀疑这与文件流的方式有关...也许连接没有正确关闭,或者沿着这些线路.
在尝试了几个不同的东西后,我发现以下方法对我有用:
Response.WriteFile(path);
Response.Flush();
Response.Close();
Response.End();
Run Code Online (Sandbox Code Playgroud)
这解决了上述问题,查看视频不再导致Internet Explorer挂起.
但是,我的理解是Response.WriteFile()首先将文件加载到内存中,并且假设流式传输的某些文件可能非常大,这似乎不是一个理想的解决方案.
我很想知道其他开发人员如何在ASP.NET中传输大文件,特别是流式传输FLV视频文件.
我有一个使用C#构建的Windows服务,它是通过VS2008安装项目安装的,并且在卸载过程中遇到了一些问题:
卸载前不会停止服务
卸载例程运行时,会引发有关正在使用的文件的错误.单击"继续"正确完成安装程序,但该服务仍显示在列表中,因此未正确卸载.
(目前,我不得不使用sc delete servicename手动删除它).
我试图在使用以下代码卸载之前停止服务,但它似乎没有生效:
protected override void OnBeforeUninstall(IDictionary savedState)
{
base.OnBeforeUninstall(savedState);
ServiceController serviceController = new ServiceController(MyInstaller.ServiceName);
serviceController.Stop();
}
Run Code Online (Sandbox Code Playgroud)
何时调用此代码,如何在卸载之前停止服务?
卸载后未删除安装文件夹
应用程序还会在执行时在其安装文件夹中创建一些文件.卸载后,安装文件夹(C:\ Program Files\MyApp)不会被删除,并且包含应用程序创建的文件,但安装程序实际安装的所有其他文件都已成功删除.
卸载过程是否可以删除安装文件夹,包括该文件夹中的所有生成文件,如果是,如何删除?
谢谢.
是否可以禁用HttpHandlers的请求验证?
一点背景 - 我有一个使用HttpHandler的ASP.NET Web应用程序来接收来自WorldPay的付款响应.IIS日志显示正在从WorldPay正确调用处理程序,但从不调用处理程序内的代码.
如果我创建一个物理ASPX页面并在标头中设置ValidateRequest = false,并在Page_Load方法中放入相同的代码,则会毫无问题地调用代码.
这解决了这个问题,虽然我更喜欢坚持使用HttpHandler,因为它更适合这种类型的功能,而不是拥有一个空的ASPX页面,尽管这取决于能否禁用请求验证.
Web应用程序使用的是ASP.NET 2.0,服务器是IIS6.
将用户输入的搜索词转换为可用于where子句进行全文搜索以查询表并获取相关结果的查询的最佳方法是什么?例如,用户输入以下查询:
+"e-mail" +attachment -"word document" -"e-learning"
Run Code Online (Sandbox Code Playgroud)
应该翻译成:
SELECT * FROM MyTable WHERE (CONTAINS(*, '"e-mail"')) AND (CONTAINS(*, '"attachment"')) AND (NOT CONTAINS(*, '"word document"')) AND (NOT CONTAINS(*, '"e-learning"'))
Run Code Online (Sandbox Code Playgroud)
我目前正在使用查询解析器类,它使用正则表达式将用户输入的查询解析为标记,然后从标记构造where子句.
但是,鉴于这可能是许多使用全文搜索的系统的常见要求,我很好奇其他开发人员如何处理这个问题,以及是否有更好的做事方式.
是否可以在SQLite数据库中重新设置自动增量列,如果是这样,这是如何完成的?
即.相当于DBCC CHECKIDENT ('MyTable', RESEED, 1)
SQL Server.
如何在ListView
不将列Width
属性设置为的情况下隐藏控件中的列0
?
另外,我可以锁定Width
一列吗?
是否可以将文件夹中的所有文件扩展名映射到特定的HttpHandler(假设它们的文件扩展名映射到IIS中的aspnet_isapi.dll)?
我已经将FLV扩展映射到IIS中的ASP.NET,并在我的Web应用程序中有一个名为Static的文件夹,其中包含以下文件:
索引文件是使用JW FLV Media Player播放FLV 的基本html页面.
在Web.Config中,在HttpHanders部分下,以下工作(加载FLV并成功播放):
<add verb="*" path="MyFile.flv" type="MyApp.PassthroughFileHandler, MyApp"/>
Run Code Online (Sandbox Code Playgroud)
但这不(视频无法加载):
<add verb="*" path="Static/*" type="MyApp.PassthroughFileHandler, MyApp"/>
Run Code Online (Sandbox Code Playgroud)
我尝试了各种组合,没有太多运气.
理想情况下,我希望能够让Static文件夹中的所有FLV都使用PassthroughFileHandler,而不必在web.config中单独指定每个文件名.
asp.net ×4
c# ×3
httphandler ×2
search ×2
.net ×1
ajax ×1
api ×1
flash ×1
gmail ×1
listview ×1
rabbitmq ×1
request ×1
sql ×1
sql-server ×1
sqlite ×1
streaming ×1
t-sql ×1
user-input ×1
validation ×1
winforms ×1