小编Qui*_*ome的帖子

什么是在Compact Framework上开发时找到所有内存的最佳方法?

我已经使用了CF 远程性能监视器,但是这似乎只跟踪在托管世界中初始化的内存而不是非托管世界.好吧,我只能假设这个,因为探查器中列出的数字远远超过允许的最大数量(CE 5上为32mb).使用RPM分析特定应用程序向我展示了所有缓存的总使用量只能达到大约12mb,然后慢慢收缩,因为(我假设)非托管的东西开始占用更多内存.系统中的内存滑块还显示设备内存非常短.如果我终止该过程,滑块会显示所有内存返回.因此,必须(?)这个吞噬内存的托管进程.

有没有简单的(ish?)方式如何以某种方式跟踪非托管内存使用情况,这可能使我能够将其与相应的P/Invoke调用相匹配?

编辑:对所有你重新标记它不是.NET,标记这样的问题混淆了事情.它是.NETCF/Compact Framework.我知道它们看起来很相似,但它们是不同的,因为.NET摇滚,而CF基本上只是NotImplementedException的包装器.

compact-framework windows-ce

6
推荐指数
1
解决办法
887
查看次数

如何在避免GUID的同时阻止我的HTML被利用?

我最近继承了ASP.NET MVC 4代码库.我注意到的一个问题是在URL中使用了一些数据库ID(int)以及html表单提交.通过URL修改和创建具有不同数字的自定义HTML帖子,可以利用其当前状态中的代码.

现在,虽然我可以通过使用会话状态或其他身份验证检查轻松修复URL问题,但我不太确定嵌入到网站吐出的HTML中的数据库ID(即我给他们一个下拉填充).当ids回到帖子中时,我怎么能确定我把它们作为有效选项?在解决这个问题方面,什么被认为是"最佳实践"?

虽然我很欣赏我可以"引导它"我这样做是犹豫不决的,因为我发现在调试数据库时,它们很难解决问题.

我在这里有选择吗?我必须指导以防止轻松猜测ID,或者是否有某种DRY机制可用于验证ID返回站点时的使用情况?

更新:一位评论者询问了我期待的漏洞.让我们说我吐出一个HTML表单,其中包含一个可以导入"宝藏"的所有位置的下拉列表.用户拥有的位置的ID是1,2和3,这些是在HTML中提供的.但是用户检查html,用它来解决问题,并决定将选择了id为4的POST放在一起.4不是他的位置,是别人的.

html security asp.net-mvc

6
推荐指数
1
解决办法
420
查看次数

从MySql移植到T-Sql.任何INET_ATON()等效?

需要将一些代码从MySql移动到TSql.我有一些对INET_ATON的调用,它将类似于IPAddress的字符串转换为数字.是否有T-SQL等价物?

mysql sql t-sql

5
推荐指数
1
解决办法
3117
查看次数

OwinMiddleware和依赖注入

我试图创建一个OwinMiddleware对象以在管道中注册,以从传入的请求中提取一些信用并将其应用于我们的服务容器中的服务。这样的结果是,需要我们在控制器中使用auth的服务将到达预先经过身份验证的状态,这意味着控制器不再需要提取授权标头和主体,并且我可以删除很多将这些值传递给几个对象的管道层。

我们使用DependencyInjection(Microsoft.Extensions.DependencyInjection),更重要的是,此经过身份验证的服务的作用域是有限的,这意味着需要针对每个请求创建和销毁该服务(即,否则它可能会意外使用先前请求的凭据)。它的设置是通过使用ServiceCollection的IDependencyResolver的合理简单实现来实现的。通过我不太了解的.BeginScope()方法进行作用域定义,因为我找不到通过HttpConfiguration.IDependencyResolver实际调用.BeginScope()的源,我有点了解它的意思,但并不完全。不过效果很好。

现在,我从OwinMiddleware继承的对象的问题在于,我似乎无法通过IDependencyResolver使它与相关范围的对象通信。
由于我无法控制OwinMiddleware对象的创建,因此我所能做的就是在构造函数中指定要与之交互的服务。但是,这似乎是无用的,因为它似乎在管道中比在这里晚给我相同的对象实例(我想是因为它是作用域的?)。

即使我将IDependencyResolver放入构造函数中,也仍然无法获得正确的服务实例。我可以验证中间件是否正在执行。

不久前,我看到其他人在谈论能够使用额外的参数覆盖OwinMiddleware的Invoke()函数,从而解决范围问题。如果中间件仅创建一次,这似乎是有道理的,因为任何范围内的构造函数依赖项都会在第二个请求中失效。对我而言,在管道操作期间添加依赖项更为有意义。但是,对于我拥有的Owin lib版本(v3),只有:

public abstract Task Invoke(IOwinContext context);
Run Code Online (Sandbox Code Playgroud)

据我所知,在中间件上定义的唯一入口点是通过构造函数。我需要其他版本吗?我是否需要调用其他特殊方法来通知管道,以便根据请求构造中间件的新实例?

这个博客条目似乎表明它将在aspnet 5中修复,我相信我正在使用。那么如何以及在哪里修复它?

...当您要传递具有自己的依赖关系的类,而我们要开始使用依赖关系注入时,事情就不那么干净了。由于OwinMiddleware的构造函数接下来需要OwinMiddleware,因此我们不能简单地注册中间件本身并允许我们的DI容器解析其依赖项。

据我所知,如果确实需要向中间件添加另一个依赖项,则有两种选择:使用具体的实现(不好)对其进行新建,或者使用项目的Dependency Resolver(反模式,将其传递给MVC之间也有所不同)和Web API)。如果您找到更好的方法,请告诉我,因为我很想知道和更新此部分。对于ASP.NET 5,显然已经解决了该问题,但现在对我们没有帮助...

c# asp.net-web-api owin

5
推荐指数
1
解决办法
629
查看次数

NullRefs应该被捕获吗?

我最近向一位同事发了言:

永远不 应该明确捕获NullReferenceExceptions

我用了永远......嗯这个词.我自己从未见过适当的用例来抓住它们,但我想检查一下是否还有其他用户?

毕竟,从来没有这么强的话语.....

.net exception nullreferenceexception

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

驱动器上剩余的可用空间 - WinAPI - Windows CE

我已经忘记了WinAPI调用,以了解特定驱动器上剩余的空间,并且pinvoke.net没有给我任何爱.顺便说一句,这是紧凑的框架,所以我想coredll.dll.

有没有更好记忆的人可以开玩笑吗?

pinvoke winapi diskspace windows-ce

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

在Windows CE中进行跨进程通信的最佳机制是什么?

我需要广播一个可以在Windows CE 5设备上运行的任何应用程序拾取的事件.

之前没有这样做,所以我有兴趣了解人们会建议看哪些技术,如果有什么我没有考虑过.

需要接收此事件的所有应用程序都是基于.NET Compact Framework的,因此可以考虑"仅管理"解决方案.

.net compact-framework windows-ce

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

限制对ASP.NET站点上的文件的公共访问

试图阻止访问特定文件,而不是任何具有特定扩展名的文件,只能访问一个特定文件.问题是最终用户只需在他们的浏览器中键入:/filename.xml,就可以看到这个文件的内容,我宁愿他们也看不到这个.


我尝试过的事情:

1) 将文件放在别处

我有一个"安全"文件夹作为我的托管帐户的一部分.所以我想我只是将路径改为:"..\..\..\SSL\FileName.xml"并将文件移到那里.ASP.NET在此崩溃时出现错误:

  • 无法使用前导..退出顶级目录

所以我认为这是出于安全目的.

2) web.config中的位置

接下来我尝试在web.config中使用它:

  <location path="FileName.xml">
    <system.web>
      <authorization>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
Run Code Online (Sandbox Code Playgroud)

这似乎没有做任何事......任何人都知道为什么?我不是在这个应用程序中专门使用ASP.NET身份验证,这是为什么这不起作用?

3) 使用IIS来阻止访问

唉,我无法访问IIS,因为我有一个非常蹩脚的托管帐户.


那么有谁知道我在上述尝试中做错了什么,或者我可以尝试任何替代解决方案?

kthxbye!

asp.net security

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

什么是EIMI的好用例?

EIMI是一个显式的接口成员实现.所以代替:

public int SomeValue{get;}
Run Code Online (Sandbox Code Playgroud)

你有

int SomeInterface.SomeValue {get;}
Run Code Online (Sandbox Code Playgroud)

我正在考虑使用一个,因为我正在使用内部接口(解耦,但限制),我不想让实现对象上的方法出现在它的公共API中.

这是一个很好的用例吗?

.net c# interface

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

为什么.NET Framework StreamReader/Writer默认为UTF8编码?

我只是看StreamReader/Writer的构造函数,我注意它使用UTF8作为默认值.有谁知道这是为什么?我本以为默认使用Unicode会更安全.

.net encoding streamwriter streamreader

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

角度指令 + $observe

我似乎误解了 $observe 的工作原理。从以下示例(plunker 链接)。

HTML

<html ng-app="record">

  <head>
    <script data-require="angular.js@*" data-semver="1.2.0-rc2" src="http://code.angularjs.org/1.2.0-rc.2/angular.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body ng-controller="IndexController">
  <input type="text" value="{{src}}"/>
  <input type="text" value="{{RecordAddress}}"/>
  <input type="text" value="{{FlashVars}}"/>
  <input type="button" ng-click="handleClick()" value="click me"/>
    <record src="{{src}}"></record>
  </body>

</html>
Run Code Online (Sandbox Code Playgroud)

JS

angular.module('record',[])
.controller("IndexController", function($scope)
{
  console.log('controller called')
  $scope.handleClick = function()
  {
    console.log('handleClick - called');
    $scope.RecordAddress = 'rtmp://thisIsAnAddress';
    $scope.FlashVars = 'userid=SomeId&filename=http://localhost/Content/ThisIsAnAddress/player.swf&mediaFormat=_video.mp4&mediaServerAddress=rtmp://ThisIsAnAddress&culture=en-GB'
    $scope.src = $scope.RecordAddress+ '`' + $scope.FlashVars;
  }
})
.directive('record', function ($location) {
            return {
                restrict: 'E',
                scope: {
                    current: …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

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