小编Tho*_*mas的帖子

在MatchCollection上使用Linq扩展方法语法

我有以下代码:

MatchCollection matches = myRegEx.Matches(content);

bool result = (from Match m in matches
               where m.Groups["name"].Value.Length > 128
               select m).Any();
Run Code Online (Sandbox Code Playgroud)

有没有办法使用Linq扩展方法语法执行此操作?像这样的东西......

bool result = matches.Any(x => ... );
Run Code Online (Sandbox Code Playgroud)

c# linq

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

HtmlAgilityPack和HtmlDecode

我目前正在使用带有控制台应用程序的HtmlAgilityPack来抓取一个网站.由于html是编码的(它返回编码的字符'),我必须解码才能将内容保存到我的数据库.

有没有办法使用HtmlAgilityPack解码返回的html而不必使用HttpUtility.HtmlDecode?我希望尽可能避免将System.Web添加到我的控制台应用程序中.

html-agility-pack

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

Windows服务中的Console.WriteLine()?

我目前正在使用TopShelf和控制台应用程序来创建Windows服务.当我将代码作为控制台应用程序运行时,我使用一些Console.WriteLine()来输出结果.一旦代码执行了它应该执行的操作,我将控制台应用程序安装为Windows服务.

即使Windows服务无法写入控制台,离开Console.WriteLine()代码是否有任何缺点?如果我将Console.WriteLine()留在那里,是否存在代码不稳定的风险?

c# windows-services topshelf

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

Visual Studio 2010 Test Runner可以运行XUnit吗?

是否可以使用集成的Visual Studio 2010测试运行器来运行除MSTest之外的其他框架(Xunit,NUnit等)?

有人知道吗?

visual-studio-2010

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

Tweetsharp授权不会呈现oauth令牌

我试图在我的asp.net mvc 3应用程序中实现tweetsharp,但我遇到了问题.

我用以下设置创建了一个新的twitter应用程序:

然后,我使用他们网站上提供的示例进行了一些小的更改:

public ActionResult Twitter()
{
    TwitterService service = new TwitterService("key", "secret");
    OAuthRequestToken requestToken = service.GetRequestToken("http://127.0.0.1:8545/Membership/TwitterOAuth");

    var uri = service.GetAuthorizationUri(requestToken);

    return new RedirectResult(uri.ToString(), false /*permanent*/);
}

public ActionResult TwitterOAuth(string oauth_token, string oauth_verifier)
{
    var requestToken = new OAuthRequestToken { Token = oauth_token };

    TwitterService service = new TwitterService("key", "secret");
    OAuthAccessToken accessToken = service.GetAccessToken(requestToken, oauth_verifier);

    service.AuthenticateWith(accessToken.Token, accessToken.TokenSecret);
    TwitterUser user = service.VerifyCredentials();

    return RedirectToAction("Index", "Home");
}
Run Code Online (Sandbox Code Playgroud)

每当我弄乱他的代码时,我都会被重定向到以下的推特网址:https: …

c# tweetsharp asp.net-mvc-3

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

当我转向依赖注入时,使用语句会发生什么

我目前正在使用以下代码:

public class MyProvider
{
    public MyProvider()
    {
    }

    public void Fetch()
    {
        using (PopClient popClient = new PopClient())
        {
            ....
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

因为我希望能够对Fetch方法进行单元测试,并且由于我无法模拟PopClient,所以我创建了一个接口和一个调用PopClient的包装类.我更新的代码如下:

public class MyProvider
{
    private readonly IPopClient popClient;

    public MyProvider(IPopClient popClient)
    {
        this.popClient = popClient;
    }

    public void Fetch()
    {
        using (var pop3 = popClient)
        {
            ....
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用Ninject进行依赖注入,我不太确定using语句在更新的代码中会产生什么样的影响,因为Ninject已经创建了一个PopClient实例并将其注入到构造函数中.

using语句是否会处理pop3对象并单独保留popClient对象,以便Ninject可以处理它或者using语句是否会干扰Ninject?

在这种情况下,正确的方法是什么?任何见解都会非常有帮助.

c# dependency-injection ninject

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

为控制台应用程序配置Ninject并为我的MVC应用程序利用现有存储库

我使用存储库模式使用Ninject配置了MVC 3解决方案.我的一些绑定包括:

kernel.Bind<IDatabaseFactory>().To<DatabaseFactory>().InRequestScope();
kernel.Bind<IUnitOfWork>().To<UnitOfWork>().InRequestScope();
kernel.Bind<IMyRepository>().To<MyRepository>().InRequestScope();
kernel.Bind<IMyService>().To<MyService>().InRequestScope();
kernel.Bind<ILogging>().To<Logging>().InSingletonScope();
Run Code Online (Sandbox Code Playgroud)

我还在我的解决方案中添加了一个控制台应用程序,我希望利用相同的存储库和服务.我的控制台应用程序的Ninject配置如下所示:

kernel.Bind<IDatabaseFactory>().To<DatabaseFactory>().InSingletonScope();
kernel.Bind<IUnitOfWork>().To<UnitOfWork>().InSingletonScope();
kernel.Bind<IMyRepository>().To<MyRepository>().InSingletonScope();
kernel.Bind<IMyService>().To<MyService>().InSingletonScope();
kernel.Bind<ILogging>().To<Logging>().InSingletonScope();
Run Code Online (Sandbox Code Playgroud)

我的控制台代码如下:

static void Main(string[] args)
{
    IKernel kernel = new StandardKernel(new IoCMapper());

    var service = kernel.Get<IMyService>();
    var logger = kernel.Get<ILogging>();

    ... do some processing here
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我想确保我正在为控制台应用程序正确配置Ninject.在我的控制台应用程序中对我的所有绑定使用InSingletonScope()是否正确?我应该以不同的方式配置它吗?

ninject

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

在一个StyleBundle中使用多个CDN链接

我有以下代码:

bundles.UseCdn = true;

var fontPath = "http://fonts.googleapis.com/css?family=Open+Sans:400italic,600italic,400,600";

var commonCss = new StyleBundle("~/css/common").Include(
    "~/Content/less/myless.less",
    "~/Content/css/opensans.css", // local copy of the font path above
    "~/Content/less/mylessoverrides.less",
    "~/Content/css/font-awesome.css");

commonCss.Transforms.Add(new CssMinify());
bundles.Add(commonCss);
Run Code Online (Sandbox Code Playgroud)

上面的代码工作得很好.但是,我想从上面的CDN链接加载opensans.css.我还想将它保持为一个捆绑包并保持捆绑订单完好无损.以下代码将引发错误:

var commonCss = new StyleBundle("~/css/common").Include(
    "~/Content/less/myless.less",
    "http://fonts.googleapis.com/css?family=Open+Sans:400italic,600italic,400,600",
    "~/Content/less/mylessoverrides.less",
    "~/Content/css/font-awesome.css");

The URL 'http://fonts.googleapis.com/css?family=Open+Sans:400italic,600italic,400,600'
is not valid. Only application relative URLs (~/url) are allowed.
Run Code Online (Sandbox Code Playgroud)

一种解决方法是将其拆分为三个捆绑包,但这将违背捆绑包的整个目的:

var commonCss1 = new StyleBundle("~/css/common1").Include(
    "~/Content/less/myless.less");

var commonCss2 = new StyleBundle("~/css/common2", fontPath).Include(
    "~/Content/css/opensans.css");

var commonCss3 = new StyleBundle("~/css/common3").Include(
    "~/Content/less/mylessoverrides.less",
    "~/Content/css/font-awesome.css");
Run Code Online (Sandbox Code Playgroud)

最终的解决方案是做类似的事情:

var commonCss = new StyleBundle("~/css/common").Include(
    "~/Content/less/myless.less",
    new …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc-4

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

使用NLog记录未处理的异常?ELMAH和NLog应该一起使用吗?

我在我的ASP.NET MVC项目中使用ELMAH,我真的很喜欢它的简单性.但我需要能够以log.Info("message")方式记录我的代码中的某些事件.由于ELMAH没有提供这种能力,我开始关注NLog.

想到几个问题:

  1. 使用ELMAH和NLog是否过度杀伤?使用ELMAH处理未处理的异常,使用NLog处理其他所有情况?
  2. 是否可以将NLog配置为在nlog.config中记录未处理的异常,或者是否需要自定义代码?
  3. 如果需要自定义代码,那么添加它的最佳位置是什么?MVC框架中的OnException方法?global.asax文件?

非常感谢Anny的反馈.到目前为止,我还没有找到关于此事的好帖子?

asp.net-mvc elmah nlog asp.net-mvc-2

12
推荐指数
2
解决办法
5057
查看次数

将我的MVC提升到新的水平:DI和工作单元

我已经看过像Nerddinner和ContactManager这样的简单应用程序以及像Kigg这样的更复杂的应用程序.我理解更简单的那些,现在我想了解更复杂的那些.

通常,较简单的应用程序在LINQtoSQL或实体框架之上具有存储库类和接口(尽可能松散耦合).从控制器调用存储库以执行必要的数据操作.

我在研究更复杂的应用程序(如Kigg或Oxite)时看到的一个常见模式是引入(我只是在这里搔痒但我必须从某处开始):

  • IOC DI(在Kigg案例Unity中)
  • Web请求终身经理
  • 工作单位

这是我的问题:

我知道为了真正拥有一个松散耦合的应用程序,你必须使用像Unity这样的东西.但是,当你将Unity引入混合时,你也必须引入一个Web Request Lifetime Manager.这是为什么?为什么像Nerddinner这样的示例应用程序没有Web请求终身管理器?它到底是做什么用的?这是Unity特定的事情吗?

我注意到的第二种模式是引入工作单元.同样,同样的问题:为什么Nerddinner或ContactManager不使用工作单位?相反,这些应用程序使用Linq2Sql或Entity Framework之上的存储库类来执行数据操作.没有任何工作单位的迹象.究竟是什么以及为什么要使用它?

谢谢

以下是DinnersController级别的Nerddiner中DI的示例:

    public DinnersController()
        : this(new DinnerRepository()) {
    }

    public DinnersController(IDinnerRepository repository) {
        dinnerRepository = repository;
    }
Run Code Online (Sandbox Code Playgroud)

所以我是正确的假设因为第一个构造函数控制器"拥有"DinnerRepository,因此它将依赖于控制器的生命周期,因为它在那里被声明了?

asp.net-mvc ioc-container unity-container

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