小编Sve*_*ang的帖子

Elmah - 捕获错误,但仍然记录并发送电子邮件?

首先,我发现你可以捕获它并将其记录在catch中,但这不会发送电子邮件.然后我发现了使用这门Error Signal课程.这有用,但是从阅读中看不出来的是,它将错误视为正常,因此当我发出错误信号时,它仍会转到自定义错误页面,我不希望这种情况发生.

我想要做的是捕获该错误,记录它,发送电子邮件,但保持在页面上发生错误,以便我可以提供特殊反馈.我不希望它转到自定义错误页面.

我怎么能做到这一点?

编辑:这是我拥有的,它将我重定向到自定义错误页面.

    Try
        smtpClient.Send(mailMessage)
    Catch smtpEx As SmtpException
        errorSignal.FromCurrentContext().Raise(smtpEx)
    Catch ex As Exception
        errorSignal.FromCurrentContext().Raise(ex)          
    End Try
Run Code Online (Sandbox Code Playgroud)

编辑:发布涉及Elmah的web.config部分(除了连接字符串hah)并且我的Global.asax文件中没有涉及Elmah的内容.

  <configSections>
    <sectionGroup name="elmah">
        <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
        <section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
        <section name="errorMail" requirePermission="false" type="Elmah.ErrorMailSectionHandler, Elmah" />
        <section name="errorFilter" requirePermission="false" type="Elmah.ErrorFilterSectionHandler, Elmah" />
    </sectionGroup>
</configSections> 
 <elmah>
<security allowRemoteAccess="1" />
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="Elmah.Sql" applicationName="Web Main" />
<errorMail from="xxx" to="xxx" cc="xxx" subject="main website error" async="true" smtpPort="25" smtpServer="xxx" userName="xxx" password="xxx" />
<errorFilter>
  <test>
    <and>
      <equal binding="HttpStatusCode" …
Run Code Online (Sandbox Code Playgroud)

.net vb.net asp.net elmah

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

.CreateObjectSet <T>,.Set <T>和.CreateQuery <T>之间的区别?

我正在为实体框架编写一个通用存储库,并对这些调用之间的区别感到困惑:

ObjectContext.CreateObjectSet<T>
ObjectContext.CreateQuery<T>
DbContext.Set<T>
Run Code Online (Sandbox Code Playgroud)

我想要一个通用的存储库,它既支持从.edmx文件生成的上下文,也支持代码第一个DbContext,所以我有这个:

 public abstract class EntityRepository<TClass>
   where TClass : class, new()
{
    //private readonly TContext _context;
    private readonly ObjectSet<TClass> _objectSet;

    protected EntityRepository(IObjectContextAdapter context)
    {
        _objectSet = context.ObjectContext.CreateObjectSet<TClass>();

    }

    protected EntityRepository(ObjectContext context)
    {
        _objectSet = context.CreateObjectSet<TClass>();
    }

    public ObjectSet<TClass> Query()
    {
        return _objectSet;
    }
}
Run Code Online (Sandbox Code Playgroud)

在我在网上看过的例子中,我看过所有使用过的3个,它们之间的实际差异是什么?一个更好的表现明智吗?我知道你可以使用所有3种方法针对上下文编写LINQ查询.

generics datacontext entity-framework

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

将title/alt属性放入CSS:{content:image}之后?

我有以下CSS将PDF图标添加到链接到PDF的任何链接:

a.pdf-link:after { padding-left: 2px; content: url(../images/icon-pdf-link.gif);}
Run Code Online (Sandbox Code Playgroud)

是否可以在此图像上添加一些title和alt属性?我希望它能让用户将鼠标悬停在图标上并获得一些文本,例如"这链接到.pdf文件."我通常只是将标题属性添加到其中,但无法弄清楚如果我能通过这种方法做到这一点.

css title pseudo-element alt

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

通过提供类名作为字符串来获取引用程序集的类型?

这些类似的问题:操作方法:使用Silverlight中的字符串加载从引用的程序集在运行时类型,在引用的程序集的GetType上一类失败,但是没有答案的作品.

我有一个MVC项目,它从包含普通类型作为字符串的数据库中提取数据.这些类型位于引用的程序集中,而不是MVC项目中.

因此,例如,假设我的Referenced Assembly Name是MyFramework普通类型名称Car,完整类型名称可以是MyFramework.Cars.Car或者MyFramework.Vehicles.Cars.Car或其他一些变体.我只有引用的程序集名称和普通的类名称作为字符串.无论完整的类型名称如何,我如何获得类型?

最后,我可以在引用的程序集中编写一个函数来调用GetType()并在MvC项目中使用它,这样我可以放弃包括程序集名称吗?我想删除已知的程序集名称,所以我想我可以在引用的程序集中编写一个Util,如:

namespace MyFramework //the referenced assembly
{
  public static class TypeUtil
  {
    public static Type GetFrameworkType(string typeName)
    {
        return Type.GetType(typeName);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的MVC项目中,我可以调用它而不需要将程序集作为字符串名称.这可能还是我总是需要汇编名称?

.net c# reflection gettype .net-assembly

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

从一组对象动态构建lambda表达式?

我有一个以这种格式存储的排序列表:

public class ReportSort
{
    public ListSortDirection SortDirection { get; set; }
    public string Member { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我需要把它变成类型的lambda表达式 Action<DataSourceSortDescriptorFactory<TModel>>

假设我有以下报告排序集合:

new ReportSort(ListSortDirection.Ascending, "LastName"),
new ReportSort(ListSortDirection.Ascending, "FirstName"),
Run Code Online (Sandbox Code Playgroud)

我需要将它转换为这样的语句,如下所示:

.Sort(sort => { 
        sort.Add("LastName").Ascending();
        sort.Add("FirstName").Ascending();
      })
Run Code Online (Sandbox Code Playgroud)

排序方法签名是:

public virtual TDataSourceBuilder Sort(Action<DataSourceSortDescriptorFactory<TModel>> configurator)
Run Code Online (Sandbox Code Playgroud)

所以我现在有一些方法:

public static Action<DataSourceSortDescriptorFactory<TModel>> ToGridSortsFromReportSorts<TModel>(List<ReportSort> sorts) where TModel : class
    {
        Action<DataSourceSortDescriptorFactory<TModel>> expression;
        //stuff I don't know how to do
        return expression;
    }
Run Code Online (Sandbox Code Playgroud)

......我不知道该怎么办

编辑:答案是:

var expression = new Action<DataSourceSortDescriptorFactory<TModel>>(x =>
        {
            foreach (var sort in sorts)
            { …
Run Code Online (Sandbox Code Playgroud)

c# linq lambda linq-to-objects kendo-ui-mvc

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

加载谷歌自定义搜索结果后调用函数?

在我的页面上呈现搜索结果后,我基本上需要运行一些jQuery代码.我可以使用v1代码:

<div id="cse" style="width: 100%;">Loading</div>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript"> 
 google.load('search', '1', {language : 'en', style : google.loader.themes.V2_DEFAULT});
 google.setOnLoadCallback(function() {
var customSearchOptions = {};
var orderByOptions = {};
orderByOptions['keys'] = [{label: 'Relevance', key: ''},{label: 'Date', key: 'date'}];
customSearchOptions['enableOrderBy'] = true;
customSearchOptions['orderByOptions'] = orderByOptions;  var customSearchControl = new google.search.CustomSearchControl(
  'zzzzzzzzzzzz', customSearchOptions);
customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
var options = new google.search.DrawOptions();
options.setAutoComplete(true);
customSearchControl.setAutoCompletionId('zzzzzz:zzzzzzz+qptype:3');
options.enableSearchResultsOnly(); 
customSearchControl.draw('cse', options);
function parseParamsFromUrl() {
  var params = {};
  var parts = window.location.search.substr(1).split('\x26');
  for (var i = 0; i < parts.length; …
Run Code Online (Sandbox Code Playgroud)

javascript jquery google-search google-search-api

7
推荐指数
2
解决办法
8977
查看次数

SSIS导入和保存数据时将字符串转换为guid

我试图将一个unicode字符串从Excel文件转换为uniqueidentifier.网上已有答案看起来非常简单:

我见过这篇文章:SSIS包中的数据转换问题 - 文本到GUID

和这篇文章:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/6ce5b4d2-913a-40f1-9797-105783181f5e/ssis-variable-that-should-contain-uniqueidentifier

但是在将数据导入SQL Server 2012时,这在Visual Studio 2012中的SSIS 2012中不起作用,运行时会出现典型的转换错误.

在Excel文件中,Guid(作为字符串)以这种格式存储:

00bce79b-6c7b-427F-9711-17c19475f6e4

没有花括号或引号.

excel ssis data-conversion sql-server-2012

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

有没有办法通过Resharper通过一个模板/宏生成多个文件?

当我为应用程序编写API时,我总是遵循一个看似如下的设置模式(谁不是!?):

User (Folder/Namespace)
    User.cs
    UserDao.cs
    UserDaoFactory.cs
    UserService.cs
    UserServiceFactory.cs
Run Code Online (Sandbox Code Playgroud)

我知道Resharper有我已经使用的文件模板,但如果我不必单独添加每个文件,当你在一个应用程序中使用超过30个实体时,这将非常繁琐.如果你不能用resharper做到这一点,那么无论如何使用Visual Studio制作某种宏来执行你的resharper文件模板?

c# macros resharper templates visual-studio

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

在工厂DI上无法理解ninject(或者只是IOC容器)?

好吧,所以最近我一直在阅读ninject,但是我很难理解是什么让它更好地解释为什么他们在wiki页面上提到'穷人'的DI.可悲的是我在维基上浏览了所有页面但仍然没有得到它=(.

通常我会将我的服务类包装在处理DI的工厂模式中,如下所示:

public static class SomeTypeServiceFactory
{
    public static SomeTypeService GetService()
    {
        SomeTypeRepository someTypeRepository = new SomeTypeRepository();
        return = new SomeTypeService(someTypeRepository);

    }

}
Run Code Online (Sandbox Code Playgroud)

对我来说,这似乎很像模块:

public class WarriorModule : NinjectModule {
    public override void Load() {
      Bind<IWeapon>().To<Sword>();
      Bind<Samurai>().ToSelf().InSingletonScope();
    }
}
Run Code Online (Sandbox Code Playgroud)

每个类都有它的相关模块,你将它的构造函数绑定到一个具体的实现.虽然ninject代码少了1行,但我没有看到优势,无论何时添加/删除构造函数或更改接口构造函数的实现,您都必须更改模块,就像在工厂中一样没有?所以没有看到这里的优势.

然后我想我可以想出一个基于通用约定的工厂,如下所示:

 public static TServiceClass GetService<TServiceClass>()
        where TServiceClass : class
    {
        TServiceClass serviceClass = null;

        string repositoryName = typeof(TServiceClass).ToString().Replace("Service", "Repository");
        Type repositoryType = Type.GetType(repositoryName);

        if (repositoryType != null)
        {
            object repository = Activator.CreateInstance(repositoryType);
            serviceClass =  (TServiceClass)Activator.CreateInstance(typeof (TServiceClass), new[]{repository});
        }

        return serviceClass; …
Run Code Online (Sandbox Code Playgroud)

c# ninject ioc-container inversion-of-control

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

无法运行EF迁移,其中DbContext连接字符串在运行时设置,并将项目与应用程序分开

我有一个类库项目,其中包含一个DbContext类,如下所示:

public DbContext() : base(ContextInitializer.GetConnectionStringName())
    {
Run Code Online (Sandbox Code Playgroud)

这样,当用户(其他程序员)可以在他们在任何项目中选择的任何数据库上使用我的API和实体时,可以在他们的应用程序启动时设置它,然后设置连接字符串.现在我正在尝试在我的类库中生成迁移配置.我试过了:

Enable-Migrations -ProjectName "ClassLibraryProject" -ContextTypeName "MyDbContext" -StartUpProjectName "MyWebApp" -ConnectionString "MyConnectionString" -ConnectionProviderName "System.Data.SqlClient"
Run Code Online (Sandbox Code Playgroud)

根据这里遇到相同错误的其他答案,它没有帮助.我还是得到:

异常调用 "SetData的" 与 "2" 的参数(一个或多个):在装配"类型 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject'"Microsoft.VisualStudio.ProjectSystem.VS.Implementation,版本= 14.1. 0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'未标记为可序列化." 在C:\ Users\me.nuget\packages\EntityFramework\_6.1.3\tools\EntityFramework.psm1:718 char:5 + $ domain.SetData('project',$ project)+ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:SerializationException

异常调用 "SetData的" 与 "2" 的参数(一个或多个):在装配"类型 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject'"Microsoft.VisualStudio.ProjectSystem.VS.Implementation,版本= 14.1. 0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'未标记为可序列化." 在C:\ Users\me.nuget\packages\EntityFramework\_6.1.3\tools\EntityFramework.psm1:719 char:5 + $ domain.SetData('contextProject',$ contextProject)+ ~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +类别信息:未指定:(:) [],MethodInvocationException + FullyQualifiedErrorId:SerializationException

异常调用 "SetData的" 与 "2" 的参数(一个或多个):在装配"类型 'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject'"Microsoft.VisualStudio.ProjectSystem.VS.Implementation,版本= 14.1. 0.0,Culture = neutral,PublicKeyToken …

c# entity-framework ef-migrations entity-framework-6 asp.net-core

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