小编tug*_*erk的帖子

检查Cache后,System.Web.HttpContext.Current自身为空

我今天遇到了一个奇怪的问题,对我来说毫无意义.以下是摘要:

在方法内部,我检查一个缓存的项目如下:

private async Task<RatesStatus> getRatesStatusAsync() {

    //...

    if (_currentHttpContext != null) {

        //Here, I am checking for a Cached item
        var cachedRatesStatusObj = HttpContext.Current.Cache[Constants.RATESSTATUS_CACHE_KEY_NAME];
        if (cachedRatesStatusObj != null)
            return (RatesStatus)cachedRatesStatusObj;
    }

    //...

    cacheRatesStatusObject(ratesStatus);

    //...
}
Run Code Online (Sandbox Code Playgroud)

这里,HttpContext.CurrentASP.NET应用程序中的预期值不是预期的.然后,在cacheRatesStatusObject方法内部,我检查是否HttpContext.Current为null,如下所示:

private void cacheRatesStatusObject(RatesStatus ratesStatus) {

    //...

    //Seeing if HttpContext.Current is null or not first.
    //and it is null here...
    if (HttpContext.Current == null)
        return;

    //...
}
Run Code Online (Sandbox Code Playgroud)

它在那里是空的.不知道这里发生了什么.有什么想法吗?

asp.net caching httpcontext system.web

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

当我尝试将值设置为xml属性时,powershell奇怪地编码&符号

在我的构建脚本中,我有一个helper powershell函数,如下所示:

function set-connectionstring {
  param($path, $name, $value)
  $settings = [xml](get-content $path)
  $setting = $settings.configuration.connectionStrings.add | where { $_.name -eq $name }
  $setting.connectionString = "$value"
  $setting.providerName = "System.Data.SqlClient"
  $resolvedPath = resolve-path($path) 
  $settings.save($resolvedPath)
}
Run Code Online (Sandbox Code Playgroud)

它工作得很好,除了当我尝试设置值时,它奇怪地编码了&符号.这是问题:

在我的连接字符串里面,我&quot有价值.这应该是完全有效的.但是,我的上述代码将此转换&amp;quot;为完全不合理的.你知道我能解决这个问题吗?

xml powershell build-script powershell-2.0

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

ASP.NET Web API - 具有多个参数的GET请求

我想做的是有一个api请求,如/ api /计算器?1 = 7.00&2 = 9.99&3 = 5.50&4 = 45.76等我的控制器如何获取请求数据?查询字符串的键/代码的整数介于1和1000之间.在查询字符串中,它们可以是1000个代码中的一些代码,不一定是所有代码.价值部分是双倍的.

我认为可行的一种方法是,如果我创建一个StupidObject具有1000个属性的模型对象(ex )(现在应该使用名为p1,p2,... p1000的属性代码,因为int不是允许的属性名称),装饰有ModelBinder.然后对于控制器我可以有类似的东西,GetCalcResult(StupidObject obj){...}但这似乎不是一个优雅的解决方案:)

我尝试过控制器,GetCalcResult([FromURI]Dictionary<int, double> dict){...}但是dict总是为空.也没有[FromURI]我得到一个错误.也尝试List<KeyValuePair<int, double>>作为控制器参数具有相同的结果.

有人能指出我正确的方向还是给我一个有效的例子?

asp.net-web-api

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

ValidationAttribute类的RequiresValidationContext属性是什么?

使用.NET Framework 4.5,ValidationAttribute该类现在具有一个Boolean名为的新属性RequiresValidationContext.

我一直在挖掘很长时间,我找不到这个属性的用途.这个的difault值是false,我最初认为如果将其设置为false,则调用以下方法:

public virtual bool IsValid(object value)
Run Code Online (Sandbox Code Playgroud)

如果设置为true,则调用下面的一个:

protected virtual ValidationResult IsValid(object value, ValidationContext validationContext);
Run Code Online (Sandbox Code Playgroud)

事实证明,无论你设置什么,总是调用IsValid返回的方法ValidationResult.

为了爱上帝,这个RequiresValidationContext属性是什么?

.net asp.net validation data-annotations .net-4.5

5
推荐指数
2
解决办法
2062
查看次数

选择操作时,ASP.NET Web Api会忽略RouteParameter.Optional

我通过以下步骤找到了此问题:

  1. 使用已安装的项目模板创建一个新的WebApi项目

  2. 转到Controllers/ValuesController.cs,有两个这样的Get方法:

    public IEnumerable<string> Get() //这个提供了GetAll功能

    public string Get(int id) //这个是GetOneById

  3. 我不喜欢这个设计,因为我认为两个api方法可以组合成一个:

    public IEnumerable<string> Get(string ids) 当ids为null时,它返回所有记录,否则返回id的结果(看起来像id1,id2,id3 ......)

我也修改了路线:

    config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{ids}",
            defaults: new { ids = RouteParameter.Optional }
        );
Run Code Online (Sandbox Code Playgroud)

现在我觉得一切都准备好了.但是当我/values在浏览器中访问时(没有指定ids参数),我被告知"没有找到任何操作",直到我添加一个默认值ids:

public IEnumerable<string> Get(string ids = null)
Run Code Online (Sandbox Code Playgroud)

从现在开始,一切都按照我的预期运作.我仍然无法defaults在路线中移动参数.这意味着:代码将ids参数声明为可选两次.

查看位于System.Web.Http.Controllers.ActionSelectorCacheItem.FindActionUsingRouteAndQueryParameters方法的MVC4的源代码,我可以看到在找到正确的操作时忽略路由中定义的可选参数.就个人而言,我认为这真的很糟糕,即使是变通方法也很容易.或者我误解了路线和行动方法之间的关系?我认为路由是用于帮助请求查找其相应操作的规则,而"参数是可选的"恰好是规则的一部分.

c# asp.net-mvc asp.net-mvc-4 asp.net-web-api

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

如何将承载令牌与MVC 6 API一起使用?

我正在研究一些MVC 6和ASP.NET 5样本,我在找到有关使用承载令牌来保护API的任何有价值的文档时遇到了问题.我能够使这些样本与VS 2013,MVC 5一起工作,但是我无法将这些示例移植到VS 2015和MVC 6.有没有人知道在MVC 6中实现承载令牌的任何好样本以保护API?

asp.net-identity bearer-token asp.net-core-mvc asp.net-core

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

FindAndModify在哪里适合CQRS?

在我当前的应用程序中,我FindAndModify对MongoDB服务器进行了以下MongoDB 调用

public static TEntity PeekForRemoveSync<TEntity>(this MongoCollection<TEntity> collection, string reason)
    where TEntity : class, IEntity, IUpdatesTrackable, ISyncable, IDeletable, IApprovable
{
    if (reason == null)
    {
        throw new ArgumentNullException(nameof(reason));
    }

    IMongoQuery query = Query.And(
        Query<TEntity>.EQ(e => e.SyncInfo.IsDirty, true),
        Query<TEntity>.NE(e => e.Deletion, null),
        Query<TEntity>.NE(e => e.Approval, null),
        Query<TEntity>.EQ(e => e.SyncInfo.HumanInvestigateFlag, null),
        Query.Or(
            Query<TEntity>.EQ(e => e.SyncInfo.IsUpdateInProgress, false),
            Query<TEntity>.LT(e => e.SyncInfo.UpdateStartInfo.OccuredOn, DateTime.UtcNow.AddSeconds(-SyncConstants.PeekExpireTimeInSeconds))
        ),
        Query<TEntity>.LTE(e => e.SyncInfo.PeekedCount, MaxPeekedCount)
    );

    return PeekForSync(collection, query, reason);
}

private static TEntity PeekForSync<TEntity>(this MongoCollection<TEntity> collection, IMongoQuery query, string …
Run Code Online (Sandbox Code Playgroud)

c# mongodb cqrs

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

JQuery $ .ajax.post到具有秘密API密钥的服务

让我们假设有一项服务如下;

http://exmaple.com/service1/GetSomething?apikey= {api-key-goes-here}

我的api密钥是:96a143c8-2f62-470c-b81f-dec5fc271873

所以我们将调用> http://exmaple.com/service1/GetSomething?apikey=96a143c8-2f62-470c-b81f-dec5fc271873链接,它会以JSON的形式返回响应.

当我使用JQuery(或任何其他客户端JavaScript库)使用它时,该密钥将如何安全?我在想,我认为没有办法.如果我打算通过客户端电话拨打该服务,那将是我们公开的.

对此有何想法?

谢谢.

javascript security api jquery client-side

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

表变量在sql server 2008 r2上是否安全?

例如,我将在我的一个存储过程中使用以下表变量;

DECLARE @MyTempTable TABLE 
(
   someField int,
   someFieldMore nvarchar(50)
)
Run Code Online (Sandbox Code Playgroud)

这个变量线程安全吗?如果多个请求同时发生,您认为会发生冲突吗?

sql t-sql sql-server sql-server-2008-r2

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

TinyMce使用ASP.NET MVC 3使用Razor View Engine - 加载但不显示

我有一个使用TinyMce jQuery插件的简单表单.当我加载页面时,TinyMce应该用他的编辑器替换我的textarea,但这不会发生.查看生成的html,我的textarea就在那里(可见性设置为隐藏)但是TinyMce没有创建任何iFrame对象.TinyMce对象存在,但activeEditor为null.就好像我没有初始化它,但我遵循的示例代码完全如下:

//这是我加载脚本的地方

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.tinymce.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/tiny_mce_jquery.js")"></script>
Run Code Online (Sandbox Code Playgroud)

//这是我的文字区域

<textarea id="tinymceId" name="content" class="tinymce" rows="1" cols="50" style="width:100%;" ></textarea>
Run Code Online (Sandbox Code Playgroud)

//这是我的脚本代码,我在其中初始化它

$(document).ready(function () {
    $('#tinymceId').tinymce({
       doctype: '<!DOCTYPE html>',
       editor_selector: "tinymce",
       convert_urls: false,
       mode: "textareas",
     });
});
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc jquery tinymce razor asp.net-mvc-3

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