小编Aka*_*ava的帖子

什么是WPF预览活动?

我一直在寻找事件的描述"预览******",就像每个元素都有事件KeyDown和PreviewKeyDown.有什么不同(不是一个是附加事件而一个不是,真正的传统差异和编程方式的区别)

在从Control派生的任何类中,你可以覆盖这两个方法.. OnKeyDown和OnPreviewKeyDown,现在我正在编写我的自定义控件,我应该使用哪种方法?两者之间有什么区别.

wpf events

76
推荐指数
2
解决办法
3万
查看次数

REST和WebServices之间的区别

有什么区别REST和WebService(SOAP),我查看了facebook api,他们使用HTTP头和一些参数(可能是xml或非)并在xml中返回结果,其中SOAP完全相同,HTTP头+ xml参数和返回标头+ xml.

REST还需要一些经过身份验证的令牌,否则SOAP会使用http会话,这与用于身份验证和其他信息的令牌完全相同.我只能看到SOAP是REST的高级版本?

或者还有其他性能考虑因素吗?阅读REST只是谈论非常高级别的客户端服务器通信,但即使SOAP也完全相同.任何人都可以指出我可以定义REST和SOAP的正确边界.

我们在.net中透明地使用了很多SOAP,但是我只是想知道它是否真的值得注意REST,目前一切都运行得非常流畅.

我知道REST是一种架构而SOAP是一种协议,但我的问题是详细说明,目前SOAP的ASP.NET WebService实现是否具有REST架构?

asp.net rest soap web-services

58
推荐指数
2
解决办法
4万
查看次数

MaxDegreeOfParallelism有什么作用?

我正在使用Parallel.ForEach并且我正在做一些数据库更新,现在没有设置MaxDegreeOfParallelism,双核处理器机器导致sql客户端超时,否则四核处理器机器不知何故不会超时.

现在我无法控制我的代码运行的哪种处理器内核可用,但是我可以使用MaxDegreeOfParallelism更改某些设置,这些设置可能会同时运行较少的操作而不会导致超时?

我可以增加超时但它不是一个好的解决方案,如果在较低的CPU上我可以同时处理较少的操作,这将减少对CPU的负载.

好的我也读过所有其他帖子和MSDN,但是将MaxDegreeOfParallelism设置为较低值会让我的四核机器遭受损失吗?

例如,无论如何,如果CPU有两个内核,那么使用20,如果CPU有四个内核,那么40?

c# .net-4.0 parallel-extensions task-parallel-library parallel.foreach

49
推荐指数
3
解决办法
5万
查看次数

如何在ASP.NET响应中提供大文件?

我不是在寻找数据库中流文件内容的替代方案,事实上我正在寻找问题的根源,这是运行文件直到IIS 6我们在经典模式下运行我们的应用程序,现在我们将IIS升级到7我们是在管道模式下运行应用程序池并且此问题已启动

我有一个处理程序,我必须向客户端请求提供大文件.我面临以下问题,

文件平均大小为4到100 MB,因此我们考虑80MB文件下载案例.

缓冲,缓慢启动

Response.BufferOutput = True;
Run Code Online (Sandbox Code Playgroud)

这导致文件启动非常慢,因为用户下载甚至进度条直到几秒钟才出现,通常是3到20秒,原因是,IIS首先读取整个文件,确定内容长度然后开始文件传输.文件正在视频播放器中播放,并且运行速度非常慢,但iPad仅先下载文件的一小部分,因此它可以快速运行.

缓冲关闭,无内容长度,快速启动,无进度

Reponse.BufferOutput = False;
Run Code Online (Sandbox Code Playgroud)

这导致立即启动,但最终客户端(典型的浏览器,如Chrome)不知道内容长度,因为IIS也不知道,因此它不显示进度,而是说下载了X KB.

缓冲关闭,手动内容长度,快速启动,进度和协议违规

Response.BufferOutput = False;
Response.AddHeader("Content-Length", file.Length);
Run Code Online (Sandbox Code Playgroud)

这样可以在Chrome等中立即正确下载文件,但在某些情况下,IIS处理程序会导致"远程客户端关闭连接"错误(这种情况非常频繁),而其他WebClient会导致协议违规.这发生在所有请求的5%到10%,而不是每个请求.

我想发生的事情是,当我们不进行缓冲时,IIS不会发送任何名为100的内容,并且客户端可能断开连接而不期望任何输出.但是,从源读取文件可能需要更长的时间,但在客户端我增加了超时但似乎IIS超时并且无法控制.

无论如何,我可以强制响应发送100继续,不让任何人关闭连接?

UPDATE

我在Firefox/Chrome中找到了以下标题,这里似乎没有任何异常的协议违规或坏标题.

Access-Control-Allow-Headers:*
Access-Control-Allow-Methods:POST, GET, OPTIONS
Access-Control-Allow-Origin:*
Access-Control-Max-Age:1728000
Cache-Control:private
Content-Disposition:attachment; filename="24.jpg"
Content-Length:22355
Content-Type:image/pjpeg
Date:Wed, 07 Mar 2012 13:40:26 GMT
Server:Microsoft-IIS/7.5
X-AspNet-Version:4.0.30319
X-Powered-By:ASP.NET
Run Code Online (Sandbox Code Playgroud)

更新2

转向回收仍然没有提供太多,但我已经将我的MaxWorkerProcess增加到8,现在我的错误数量减少了.

但平均而言,在一秒内有200个请求,2到10个请求失败..,这几乎每隔一秒发生一次.

更新3

继续5%的请求失败"服务器提交了协议违规.部分= ResponseStatusLine",我有另一个程序从使用WebClient的网络服务器下载内容,并且平均每次发出4-5次这个错误有5%的请求失败.无论如何都有追踪WebClient的失败?

问题重新定义

收到零字节文件

IIS由于某种原因关闭连接,在WebConfig的客户端,我收到0字节的文件,这不是零字节,我们做SHA1哈希检查,这告诉我们在IIS Web服务器中,没有记录错误.

这是我的错误,它解决了因为我们正在使用Entity Framework,它正在读取脏(未提交的行),因为读取不在事务范围内,将其放入事务范围已解决此问题.

提升协议违规例外

WebClient抛出WebException,说"服务器提交了协议违规.Section = ResponseStatusLine.

我知道我可以启用不安全的头解析,但这不是重点,当它是我的HTTP处理程序发送正确的标头,不知道为什么IIS发送任何额外的(在Firefox和Chrome上检查,没有什么异常),这只发生2百分之几.

更新4

发现sc-win32 64错误,我在某处读到MinBytesPerSecond的WebLimits必须从240更改为0,仍然一切都是相同的.但是我注意到,每当IIS记录64个sc-win32错误时,IIS就会将HTTP状态记录为200但是有一些错误.现在我无法打开200的Failed Trace Logging,因为它会导致大量文件.

通过增加MinBytesPerSecond以及禁用Sessions来解决上述两个问题,我已经添加了详细的答案,总结了每一点.

asp.net iis download

42
推荐指数
3
解决办法
6万
查看次数

为什么浏览器仍然使用max-age发送缓存控制公共请求?

我有Amazon S3对象,对于每个对象,我都设置了

Cache-Control: public, max-age=3600000
Run Code Online (Sandbox Code Playgroud)

那大概是41天.

我的Amazon CloudFront Distribution设置了最小TTL,也有3600000.

这是清除缓存后的第一个请求.

GET /1.0.8/web-atoms.js HTTP/1.1
Host: d3bhjcyci8s9i2.cloudfront.net
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Run Code Online (Sandbox Code Playgroud)

而响应是

HTTP/1.1 200 OK
Content-Type: application/x-javascript
Content-Length: 226802
Connection: keep-alive
Date: Wed, 28 Aug 2013 10:37:38 GMT
Cache-Control: public, max-age=3600000
Last-Modified: Wed, 28 Aug 2013 10:36:42 GMT
ETag: "124752e0d85461a16e76fbdef2e84fb9"
Accept-Ranges: bytes
Server: AmazonS3
Age: 342557
Via: 1.0 6eb330235ca3971f6142a5f789cbc988.cloudfront.net (CloudFront)
X-Cache: Hit from cloudfront
X-Amz-Cf-Id: 92Q2uDA4KizhPk4TludKpwP6Q6uEaKRV0ls9P_TIr11c8GQpTuSfhw==
Run Code Online (Sandbox Code Playgroud)

即使亚马逊明确发送Cache-Control,Chrome仍然会发出第二个请求,而不是从Cache中读取它. …

google-chrome cache-control amazon-s3 http-headers amazon-cloudfront

37
推荐指数
3
解决办法
3万
查看次数

如何在不抛出MVC控制器异常的情况下向$ .ajax报告错误?

我有一个控制器,和一个定义的方法......

[HttpPost]
public ActionResult UpdateUser(UserInformation model){

   // Instead of throwing exception
   throw new InvalidOperationException("Something went wrong");


   // I need something like 
   return ExecutionError("Error Message");

   // which should be received as an error to my 
   // $.ajax at client side...

}
Run Code Online (Sandbox Code Playgroud)

异常问题

  1. 我们必须在设备或网络错误(如SQL连接错误)的情况下记录异常.
  2. 这些消息就像用户的验证消息,我们不想记录.
  3. 抛出异常也会使事件查看器泛滥.

我需要一些简单的方法来报告我的$ .ajax调用的一些自定义http状态,以便它在客户端产生错误,但我不想抛出错误.

UPDATE

我无法更改客户端脚本,因为它与其他数据源不一致.

到目前为止,HttpStatusCodeResult应该可以正常工作,但这是导致此问题的IIS.无论我设置了什么错误消息,尝试了所有答案,我仍然只收到默认消息.

c# ajax asp.net-mvc controller

34
推荐指数
3
解决办法
5万
查看次数

如何为加密算法创建加密密钥?

我想使用.Net Security命名空间中提供的加密算法,但是我试图了解如何生成密钥,例如AES算法需要256位,即16字节密钥,以及一些初始化向量,这也是几个字节.

  1. 我可以在Key和IV中使用任何值的组合吗?例如Key和IV中的所有零都有效吗?我知道算法的细节做了很多xors,所以零不会有任何好处,但这些算法是否有任何限制?

  2. 或者我是否必须使用某些程序生成密钥并将其永久保存在某处?

我希望在加密后将数据存储在数据库中,安全配置文件数据(如用户名,密码,电话号码等)和密钥将仅供连接字符串中提到的数据库用户使用,并且可供管理员使用.

.net c# security encryption

32
推荐指数
5
解决办法
7万
查看次数

SQL Server更新触发器,仅获取已修改字段

我知道COLUMNS_UPDATED,我需要一些快速的快捷方式(如果有人做了,我已经制作了一个,但如果有人可以节省我的时间,我会恭维它)

我需要基本上只有更新列值的XML,我需要这个用于复制目的.

SELECT*FROM inserted为我提供了每一列,但我只需要更新的列.

像下面这样......

CREATE TRIGGER DBCustomers_Insert
    ON DBCustomers
    AFTER UPDATE
AS
BEGIN
    DECLARE @sql as NVARCHAR(1024);
    SET @sql = 'SELECT ';


    I NEED HELP FOR FOLLOWING LINE ...., I can manually write every column, but I need 
    an automated routin which can work regardless of column specification
    for each column, if its modified append $sql = ',' + columnname...

    SET @sql = $sql + ' FROM inserted FOR XML RAW';

    DECLARE @x as XML;
    SET @x …
Run Code Online (Sandbox Code Playgroud)

sql sql-server triggers database-replication sql-update

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

如何更改WPF应用程序的StartupUri?

我试图修改App.cs并从代码后面加载WPF XAML文件,但它不能正常工作.

无论我试图将其设置为StartupUri,它都不会启动,程序将在此之后退出.

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);

        LoginDialog dlg = new LoginDialog();
        if (dlg.ShowDialog() != true)
            return;

        switch (dlg.ChoiceApp) { 
            case ChoiceApp.CustomerEntry:
                StartupUri = new Uri("/MyApp;component/Forms/CustomerEntry.xaml", 
                    UriKind.Relative);
                break;
            case ChoiceApp.VendorEntry:
                StartupUri = new Uri("/MyApp;component/Forms/VendorEntry.xaml", 
                    UriKind.Relative);
                break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我甚至做了跟踪并发现LoginDialog工作正常并正确返回值,但设置"StartupUri"不起作用.

我在反向程序集中检查了在OnStartup之后调用App的DoStartup方法,所以从技术上讲,我的StartupUri必须加载,但它没有,在App.xaml启动uri根本没有定义.

注意:Bug已确认

我注意到ShowDialog设置了Application.MainWindow,当对话结束时,它将其设置为null,并且由于此设置,在OnStartup或Startup事件中调用Modal Dialog后,StartupUri不起作用.

关于无效的uri或类似的东西没有错误或例外.

这个方法在没有在Startup事件或OnStartup中调用DialogBox的情况下工作,我认为在这个方法上调用showdialog会导致它的主窗口设置为过期窗口,并在此之后关闭.

wpf uri startup

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

如何创建ASP.NET MVC区域作为插件DLL?

这是我想要实现的,我想将ASP.NET MVC的AREA分离为纯单个DLL.

  1. Blog.DLL
  2. Forums.DLL
  3. FAQ.DLL

它们中的每一个都是单独的ASP.NET MVC区域,具有自己的默认CSHTML或ASPX页面.从长远来看,安装,迁移和维护大量页面(包括资源,javascripts等)是非常痛苦的.因为大多数这些都不会改变.

我的最终网站将是这样的.

\MvcApplication
   \bin
      \MvcApplication.bin
      \Blog.dll
      \Forums.dll
   \Controllers
      \..
   \Models
      \..
   \Views
      \..
   \Global.asax
   \Web.config
Run Code Online (Sandbox Code Playgroud)

没有添加任何东西,只是删除Blog.dll,我的应用程序应该支持/博客及其所有页面.如果我想自定义一些东西,我可以添加区域,并只添加cshtml页面..

\MvcApplication
   \bin
      \MvcApplication.bin
      \Blog.dll
      \Forums.dll
   \Areas
      \Blog
          \Views
              \Shared
                  \BlogLayout.cshtml <-- this will override the look
   \Controllers
      \..
   \Models
      \..
   \Views
      \..
   \Global.asax
   \Web.config
Run Code Online (Sandbox Code Playgroud)

这将有助于重用ASP.NET区域插件,只需将dll放在bin文件夹中即可.但是web.config可能需要进行一些更改,但很可能我们会在数据库中保存配置值,并且只需要web.config中的"Entity Framework连接字符串".

我的挑战(问题)

  1. 可能吗?它肯定在我看来,但会有任何反思/许可问题吗?
  2. 如何在一个DLL中包含cshtml/aspx视图?可能是编译版本?我在codeplex上看过几个基于文本模板的View Engines,但我对如何实际使用它们感到困惑.
  3. 我如何让ViewEngine首先检查物理目录文件是否存在,然后在dll本身作为资源文件查看cshtml/aspx?

asp.net-mvc plugins razor asp.net-mvc-3

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