小编Pau*_*aul的帖子

异步/等待和缓存

我的服务层正在缓存很多对memcached的Db请求,这是否使得无法使用Async/Await?例如,我怎么能等待这个?

public virtual Store GetStoreByUsername(string username)
{
        return _cacheManager.Get(string.Format("Cache_Key_{0}", username), () =>
        {
                return _storeRepository.GetSingle(x => x.UserName == username);
        });
}
Run Code Online (Sandbox Code Playgroud)

注意:如果密钥存在于缓存中,它将返回"Store"(而不是a Task<Store>),如果缓存中不存在该密钥,则它将执行lambda.如果我将Func更改为

return await _storeRepository.GetSingleAsync(x => x.UserName == username);
Run Code Online (Sandbox Code Playgroud)

并且方法签名为

public virtual async Task<Store> GetStoreByUsername(string username)
Run Code Online (Sandbox Code Playgroud)

由于缓存返回类型,这显然不起作用.

c# caching async-await

15
推荐指数
2
解决办法
6969
查看次数

Nuget push无法在非交互模式下提示输入

我正在运行此命令

nuget push Package.1.0.0.0.nupkg -s http://mysource.com/ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -ConfigFile ..\..\.nuget\nuget.config
Run Code Online (Sandbox Code Playgroud)

我收到此错误

UserName: Cannot prompt for input in non-interactive mode.
Run Code Online (Sandbox Code Playgroud)

我已经指定了nuget.config文件,其中包含用户名和cleartextpassword

  <packageSources>
    <add key="NuGet official package source" value="http://www.nuget.org/api/v2" />
    <add key="https://www.nuget.org/api/v2/" value="https://www.nuget.org/api/v2/" />
    <add key="PackageName" value="http://mysource.com/nuget" />
  </packageSources>

....    

  <packageSourceCredentials>
    <PackageName>
      <add key="Username" value="<username>" />
      <add key="ClearTextPassword" value="<clearpassword>" />
    </PackageName>
  </packageSourceCredentials>
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?我在VS2013中运行批处理文件我正在使用的nuget版本是NuGet版本:2.8.50926.602

nuget

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

为程序集中的现有类定义默认构造函数

有没有一种方法可以为给定程序集中的所有类定义默认构造函数。例如,我在程序集中有这样的类-

public class SomeClass
{
    public SomeClass(int x, int y)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

这些类都需要一个默认的构造函数,但是我不想将所有这些类都用一个默认的构造函数弄乱,所以我该如何使用反射或类似方法呢?(也许是TypeBuilder.DefineDefaultConstructor?)

c# reflection

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

Angular SPA + WebApi的IIS URL重写规则

我有一个SPA + WebAPI应用程序,它们都在同一个项目中.我只希望WebAPI应用程序处理来自目录"api"的请求.所以api下的任何东西都将由服务器处理,其他一切都将由Angular SPA处理.

我现在有

   <rewrite>
      <rules>
        <rule name="AngularJS" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
          </conditions>
          <action type="Rewrite" url="/" />
        </rule>
      </rules>
    </rewrite>
Run Code Online (Sandbox Code Playgroud)

这工作正常,除非我转到URL

http://localhost/customers/2 (它加载文档,但所有资源都以错误的mime类型进入,因为上面的重定向规则,我已经得出结论)

URL http://localhost/customers工作正常将由我的SPA应用程序路由

除了API目录下的请求之外,如何将所有内容重定向到我的SPA?

iis-7 rewrite

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

注册具有视图的演示者

如果我有这样的主持人——

public class LandingPresenter : ILandingPresenter
{            
    private ILandingView _view { get; set; }
    private IProductService _productService { get; set; }

    public LandingPresenter(ILandingView view, IProductService)
    {
        ....
    }
}
Run Code Online (Sandbox Code Playgroud)

考虑到依赖视图不会被注册,我如何向 Autofac 注册这个 Presenter(但 IProductService 会)

    builder.RegisterType<LandingPresenter>().As<ILandingPresenter>(); ????
Run Code Online (Sandbox Code Playgroud)

c# mvp autofac

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

在大字符串中查找令牌

嗨,我需要找到一个大字符串中的所有匹配项,我发现了这个问题

检测字符串中的特定标记.C#

这看起来很完美!唯一的问题是没有用.这个问题和我的问题之间的区别在于,不是使用#\ w +#而是需要使用[[\ w +]].这是我的代码(某人是我的大字符串):

        Regex reg = new Regex(@"[[\w+]]");
        foreach (Match m in reg.Matches(sb.ToString()))
        {
            RenderHtmlRecursive(helper, sb, path, m.Value);
        }
Run Code Online (Sandbox Code Playgroud)

当我运行这个我得到1匹配:)但值是(m.Value):"t]"

sb是(现在的小文字):卡片[[RegisterText]]

有任何想法吗?

c# regex

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

为后台线程配置Autofac容器

我有一个asp.net MVC站点,它有许多使用InstancePerHttpRequest范围注册的组件,但是我还有一个"后台任务",每隔几个小时运行一次,没有httpcontext.

我想得到一个我的IRepository的实例,它已经像这样注册了

builder.RegisterGeneric(typeof(EfRepository<>)).As(typeof(IRepository<>))
     .InstancePerHttpRequest();
Run Code Online (Sandbox Code Playgroud)

如何使用Autofac从非http上下文中执行此操作?我认为IRepository应该使用InstancePerLifetimeScope

asp.net backgroundworker autofac

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

多个注册表FluentScheduler

我正在使用FluentScheduler,并且遇到一个我有2个注册表类的问题,

FeedRegistry
SitemapRegistry
Run Code Online (Sandbox Code Playgroud)

FeedRegistry应该每15分钟运行一次,sitemapregistry运行6个小时.

我有这个代码:

 TaskManager.Initialize(new FeedRegistry());
 TaskManager.Initialize(new SitemapRegistry());
Run Code Online (Sandbox Code Playgroud)

Schedule<FeedTask>().ToRunNow().AndEvery(15).Minutes();
Schedule<SitemapTask>().ToRunNow().AndEvery(6).Hours();
Run Code Online (Sandbox Code Playgroud)

SitemapTask

    public class SitemapTask : ITask
    {
        private readonly ISitemapHelper _sitemapHelper;

        public SitemapTask(ISitemapHelper  sitemapHelper)
        {
            _sitemapHelper = sitemapHelper;
        }

        public void Execute()
        {
                _sitemapHelper.Process(false);
        }
    }
Run Code Online (Sandbox Code Playgroud)

FeedTask

    public class FeedTask : ITask
    {
        private readonly IFeedHelper _feedHelper;

        public FeedTask(IFeedHelper feedHelper)
        {
            _feedHelper = feedHelper;
        }

        public void Execute()
        {
            _feedHelper.Process(false);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我正在使用Autofac,并且依赖项已注册为"InstancePerLifetimeScope".问题是FeedTask只在应用程序开始时运行一次,但在15分钟后不再运行.但是,如果我将初始化反转为

Schedule<SitemapTask>().ToRunNow().AndEvery(6).Hours();
Schedule<FeedTask>().ToRunNow().AndEvery(15).Minutes();
Run Code Online (Sandbox Code Playgroud)

它将每15分钟运行一次(我假设站点地图不会每6小时运行一次)

怎么修?

scheduler autofac fluentscheduler

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

在odata中查询嵌套导航属性

我想在我的odata服务中扩展所有导航属性...

public class Order
{
     Product Product {get;set;}
}

public class Product
{
     Category Category {get;set;}
}

public class Category
{
     string Name {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

如何显示所有这些导航属性?这就是我所拥有的

/的OData /订单?$展开;产品

我怎么也显示类别?

odata asp.net-web-api

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