小编Jef*_*nke的帖子

使用'var'会影响性能吗?

之前我问了一个问题,为什么我看到这么多的例子都使用了这个var关键字并得到了答案,虽然它只是匿名类型所必需的,但它仍然被用来使编写代码"更快"/更容易和"只是因为".

这个链接("C#3.0 - Var不是Objec")之后,我看到它var被编译成IL中的正确类型(你会在中间的文章中看到它).

我的问题是IL代码使用var关键字take 会有多少(如果有的话),如果在任何地方使用它,它是否会接近于对代码性能有可衡量的水平?

c# variables performance var

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

.Net MVC Routing Catchall无效

我似乎无法弄清楚这一点.我正在尝试使用MVC Beta,我正在尝试实现一个catchall路由,这样如果用户输入mysite.com/blah而不是mysite.com/home/index,它将会出现"错误"路径.

不幸的是,似乎"默认"路线总是首先捕获"嘘声".事实上,我唯一能够进入"错误"路线的路线是blah/blah/blah/blah.

这是它应该工作的方式,因为我已经看到其他示例具有"默认"和"错误"路由设置就像这样,似乎如果他们要键入一个不存在它的控制器会点击"错误"路线.

有什么我缺少的(很可能)或者我只需要为每个控制器创建一个特定的路由?

我正在使用的代码:

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

        routes.MapRoute(
            "Error",
            "{*catchall}",
            new { controller = "Base", action = "Error", id = "404" }
        );
Run Code Online (Sandbox Code Playgroud)

谢谢杰夫

asp.net-mvc routing

16
推荐指数
3
解决办法
7443
查看次数

Windows 7 .net Excel .SaveAs()来自HRESULT的错误异常:0x800A03EC

背景:
我在工作中敬酒我的旧硬盘并且正在换新的硬盘.有了它,我将不得不重建我的机器.我的经理在他的借用笔记本电脑上安装了Windows 7,我一直在使用我的机器没有通信.但我遇到了一个问题.

我们有相当多的应用程序使用Microsoft.Office.Interop.Excel参考.我已经得到了过去的一些错误,但迄今为止我一直停留在过去几天的一个(我的机子居然遭遇了硬盘驱动器故障后的第一个重建),并已unnable以找到一个解决.我已经搜索过此错误,但在Windows 7上找不到任何有此问题的人,尽管我尝试过其他Windows Server 2008修复程序无济于事.

如果我无法解决这个问题,我将无法使用Windows 7并且想知道在重建机器之前只需擦除它并重新开始(第三次).

问题:
操作系统:Windows 7企业版
错误消息:HRESULT异常:0x800A03EC
代码:

Private m_xls As Microsoft.Office.Interop.Excel.Application
Private m_wkbk As Microsoft.Office.Interop.Excel.Workbook
Private m_wksht As Microsoft.Office.Interop.Excel.Worksheet
m_xls = New Application
m_xls.Visible = False : m_xls.DisplayAlerts = False
m_wkbk = m_xls.Workbooks.Open(Me.FilePath)
m_wksht = CType(m_wkbk.ActiveSheet, Worksheet)
'...Write some data...'
m_wkbk.SaveAs(Me.FilePath, XlFileFormat.xlWorkbookNormal, Missing.Value, Missing.Value, False, False, XlSaveAsAccessMode.xlNoChange, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value)
Run Code Online (Sandbox Code Playgroud)

错误发生在最后一行.

到目前为止我尝试过的:

  1. 更改AppPool以使用NetworkService帐户(这是我在安全设置中的用户列表中找不到的'ApplicationPoolIdentity').然后授予NetworkService帐户对相应文件夹的完全访问权限.
  2. 使NetworkService可以访问DCOMCNFG中的所有"Microsoft Excel应用程序"设置
  3. 运行此命令"appcmd set config -section:asp -enableParentPaths:true"因为它是我能找到的唯一的其他东西
  4. 使用.SaveCopyAs()虽然有效但导致了不同的错误

我只是想知道是否有其他人遇到过此问题,因为Windows 7是新的.我可以使用Server 2008,但在我告诉我的经理它不起作用之前我想有一些可靠的推理.

谢谢杰夫

.net excel windows-7

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

MVC示例使用var

也许我生活在一个泡沫中,或者我只是太新了,但我想知道是否有其他人注意到在微软的许多MVC例子中大量使用'var'来声明变量而不是特定类型?这有什么目的,还是现在要做的"内"事,还是个人风格?

asp.net-mvc var

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

类型的DbContext无法合并,因为它没有单个公共构造函数接受DbContextOptions类型的单个参数

我正在尝试将当前的.Net Core应用程序从1.1升级到2.0并且遇到此运行时错误:"类型'CoreContext'的DbContext无法合并,因为它没有单个公共构造函数接受类型为DbContextOptions的单个参数" .

它是由使用新的IServiceCollection.AddDbContextPool <>函数引起的.当我使用IServiceCollection.AddDbContext <>时它仍然有效.

这个应用程序是DB-First,因此我使用'Scaffold-DbContext'生成所有上下文.由于这一点,以及注入其他服务的需要,我对每个上下文都有一个扩展,如下所示:

public partial class CoreContext
{
    public CoreContext(
        DbContextOptions<CoreContext> options,
        IUserService userService,
        IAuditRepository auditRepository
        ) : base(options) {...}
}
Run Code Online (Sandbox Code Playgroud)

每当我运行Scaffold-DbContext时,我只是从CoreContext中删除自动生成的构造函数,但即使我把它放在那里我仍然会收到此错误.

public partial class CoreContext : DbContext
{
    public CoreContext(DbContextOptions<CoreContext> options) : base(options) {}
}
Run Code Online (Sandbox Code Playgroud)

我已经将Program.cs更新为新样式:

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                .Build();
}
Run Code Online (Sandbox Code Playgroud)

而Startup.cs非常简单:

public IServiceProvider ConfigureServices(IServiceCollection services)
{
    ...
    services.AddDbContextPool<CoreContext>(options => options.UseSqlServer(absConnectionString));
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果有帮助,我正在使用Autofac进行DI.现在我将默认回到非Pooling替代方案,但是利用这个功能会很好.

entity-framework-core asp.net-core .net-core-2.0

7
推荐指数
3
解决办法
6477
查看次数

IdentityServer4 + 旧版 .Net WebForms 应用程序

我们有一个旧的 .net 4.5.2 WebForms 应用程序,它使用 IdentityServer2 的旧定制版本进行身份验证。我们现在有机会更换它,但我看到的所有 IdentityServer4 设置示例都假设是一个 MVC 应用程序。

IdentityServer4 是否支持开箱即用的 WebForms 应用程序?我不想把这个应用程序变成一个科学怪人。

asp.net identityserver4

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

添加新控件时,Designer文件不再自动更新

我在这里可以找到的最接近的答案就是这个(它有一个编辑说它不再有效,我已经确认它没有):Visual Studio 2005 Designer不向aspx.Designer.cs添加控件

首先让我说这只发生在一个特定的网络应用程序中,它在c#3.5中,并且它曾经工作了大约第一个1 - 5.5年.

问题是当我通过源视图向aspx文件添加新控件时,控件不会自动添加到设计器文件中.我过去通过手动添加它来解决这个问题,但我有一个新项目要向aspx页面添加大量(50+)字段.

我不知道其他什么信息会有所帮助,我检查了我的事件机器错误日志但没有找到任何东西.如果有特定于VS的错误日志,我可以检查那些是否有人指出如何.

任何帮助表示赞赏.

谢谢杰夫

designer visual-studio-2008

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

如何找到实现接口的类(.Net)

我能找到的最接近这个问题的是:获得实现接口的所有类型

但这是用于代码,并使用它我必须更改代码,重新编译和运行.我想知道是否有一种更简单的方法可以查找实现某个接口的所有类.

我似乎经常面对这个问题,我正在寻找一些更简单/更通用的方法来找到我的答案.最近我想找出我可以使用哪些类实现ISet,对我来说无关紧要,只需要一个用来创建实例的类.

所以我想知道是否有任何方法可以找到实现给定接口的所有类?

谢谢,杰夫

.net inheritance

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

.NET Session无法正常工作

这是一个奇怪的,但希望有人可以在这里给我一个想法.我把几个值到会话中Session_StartGlobal.asax我的应用程序.Session_Start我的基页OnInit被调用后立即尝试使用其中一个Session变量.

奇怪的部分有时它是有效的,然后在没有任何变化后会开始给我这个错误:

"时才能使用会话状态 enableSessionState被设定为true,无论是在配置文件或Page指令.还请确保 System.Web.SessionStateModule或自定义会话状态模块包含在 <configuration>\<system.web>\<httpModules> 应用程序中的配置部分."

我看起来并且看起来在启用会话中找到所有不同的方式web.config.这是现在的样子:

<system.web>
...
    <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20"/>

    <globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
    <httpHandlers>
        <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/>
        <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add verb="GET,HEAD" path="ScriptResource.axd" validate="false" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </httpHandlers>
    <xhtmlConformance mode="Legacy"/>
    <pages>
    <!-- enableSessionState="true" …
Run Code Online (Sandbox Code Playgroud)

asp.net session-state

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