之前我问了一个问题,为什么我看到这么多的例子都使用了这个var关键字并得到了答案,虽然它只是匿名类型所必需的,但它仍然被用来使编写代码"更快"/更容易和"只是因为".
在这个链接("C#3.0 - Var不是Objec")之后,我看到它var被编译成IL中的正确类型(你会在中间的文章中看到它).
我的问题是IL代码使用var关键字take 会有多少(如果有的话),如果在任何地方使用它,它是否会接近于对代码性能有可衡量的水平?
我似乎无法弄清楚这一点.我正在尝试使用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)
谢谢杰夫
背景:
我在工作中敬酒我的旧硬盘并且正在换新的硬盘.有了它,我将不得不重建我的机器.我的经理在他的借用笔记本电脑上安装了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)
错误发生在最后一行.
到目前为止我尝试过的:
我只是想知道是否有其他人遇到过此问题,因为Windows 7是新的.我可以使用Server 2008,但在我告诉我的经理它不起作用之前我想有一些可靠的推理.
谢谢杰夫
也许我生活在一个泡沫中,或者我只是太新了,但我想知道是否有其他人注意到在微软的许多MVC例子中大量使用'var'来声明变量而不是特定类型?这有什么目的,还是现在要做的"内"事,还是个人风格?
我正在尝试将当前的.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替代方案,但是利用这个功能会很好.
我们有一个旧的 .net 4.5.2 WebForms 应用程序,它使用 IdentityServer2 的旧定制版本进行身份验证。我们现在有机会更换它,但我看到的所有 IdentityServer4 设置示例都假设是一个 MVC 应用程序。
IdentityServer4 是否支持开箱即用的 WebForms 应用程序?我不想把这个应用程序变成一个科学怪人。
我在这里可以找到的最接近的答案就是这个(它有一个编辑说它不再有效,我已经确认它没有):Visual Studio 2005 Designer不向aspx.Designer.cs添加控件
首先让我说这只发生在一个特定的网络应用程序中,它在c#3.5中,并且它曾经工作了大约第一个1 - 5.5年.
问题是当我通过源视图向aspx文件添加新控件时,控件不会自动添加到设计器文件中.我过去通过手动添加它来解决这个问题,但我有一个新项目要向aspx页面添加大量(50+)字段.
我不知道其他什么信息会有所帮助,我检查了我的事件机器错误日志但没有找到任何东西.如果有特定于VS的错误日志,我可以检查那些是否有人指出如何.
任何帮助表示赞赏.
谢谢杰夫
我能找到的最接近这个问题的是:获得实现接口的所有类型
但这是用于代码,并使用它我必须更改代码,重新编译和运行.我想知道是否有一种更简单的方法可以查找实现某个接口的所有类.
我似乎经常面对这个问题,我正在寻找一些更简单/更通用的方法来找到我的答案.最近我想找出我可以使用哪些类实现ISet,对我来说无关紧要,只需要一个用来创建实例的类.
所以我想知道是否有任何方法可以找到实现给定接口的所有类?
谢谢,杰夫
这是一个奇怪的,但希望有人可以在这里给我一个想法.我把几个值到会话中Session_Start的Global.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) .net ×2
asp.net ×2
asp.net-mvc ×2
var ×2
asp.net-core ×1
c# ×1
designer ×1
excel ×1
inheritance ×1
performance ×1
routing ×1
variables ×1
windows-7 ×1