小编tel*_*all的帖子

剃刀/ JavaScript和尾随分号

使用Visual Studio 2012,在Razor视图页面的JavaScript部分中,我得到的是我认为Razor语法与JavaScript语法之间的争斗.特别是,脚本部分中的尾随分号由intellisense标记,并传递编译器警告(而不是错误):

'警告13语法错误'.

如果我删除它,那么我得到一个语句终止建议(在这种情况下是ReSharper,但只是一个好习惯).

<script type="text/javascript">
    $().ready(function(){
        var customer = @Html.Raw(ViewBag.CustomerJSON);  // <- Razor (I think) doesn't like this semicolon
    });
</script>
Run Code Online (Sandbox Code Playgroud)

这是Razor的一个错误吗?如果是这样,有没有办法可以重写这个以避免这个问题?

javascript asp.net-mvc razor

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

log4net进程标识信息

我正在尝试创建一个涉及多台计算机上的多个进程的日志记录解决方案.我计划使用UDPAppender将所有日志消息发送到管理它们的单个机器.我有一些关于patterntrings和patternlayouts的问题.

因为我需要知道哪个机器以及该日志消息来自哪个进程,所以我也希望将其包含在日志中.我找到了主机名的%property {log4net:HostName},效果很好.但是,我在PatternLayouts中没有看到任何进程ID.当然,我在PatternString中看到类似的东西.来自FAQ:

<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
    <file type="log4net.Util.PatternString" value="log-file-[%processid].txt" />

    <layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" />
</appender>
Run Code Online (Sandbox Code Playgroud)

但我不确定是否或如何混合和匹配这两者(或者即使这是规范的方式).

所以,我的问题是:

  1. PatternString和PatternLayout有什么区别?为什么两者都有?

  2. 我在PatternString中看到%processid,我如何在PatternLayout中获得相同的内容?这是我的测试布局:

    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] [%property{log4net:HostName}] %-5level %logger  - %message%newline" />
    </layout>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 最后,将UDP布局用于UDP appender是有意义的.看起来XmlLayoutSchemaLog4j已经将HostNameProperty添加到XML消息中.如果我不想将这个新的进程ID(可能是进程名称)添加到XML消息中,那么最好的方法是什么?我应该只复制src\Layouts\XmlLayoutSchemaLog4j.cs,修改它,让log4net知道我创建了这个新的布局(比如SampleLayoutsApp)?

谢谢你的帮助

log4net

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

Registry GetSubKeyNames()列出了与Regedit不同的密钥?

我们正在使用WIX来安装我们创建的许多服务.我正在编写一个快速实用程序来转储当前安装的服务.我只是迭代以下的子键:

SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall 
Run Code Online (Sandbox Code Playgroud)

寻找DisplayName.问题是,我的十项服务中只有两项出现在列表中.

但是,当我查看Regedit中的子键时,它们就在那里.同样,它们在已安装的程序中(我也可以在Win32_Product的SELECT*中找到它们).

我浏览了MSDN文档,试图找出是否有一些我错过的注册表的特殊视图.也许这是一个特权问题?但我正在以管理员身份运行该工具.是否有一些蜂巢安装问题?

为了清楚代码,这里是测试应用程序代码(来自这个答案):

String registryKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
using(Microsoft.Win32.RegistryKey key = Registry.LocalMachine.OpenSubKey(registryKey))
{
  foreach(String subkeyName in key.GetSubKeyNames())
    Console.WriteLine(key.OpenSubKey(subkeyName).GetValue("DisplayName"));
}
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

c# registry wix

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

在Application_Start中访问ninject内核

我正在使用Ninject和与nuget一起安装的MVC3扩展.我的内核设置代码位于App_Start/NinjectMVC3.cs文件中.一切都在控制器中运行良好,但我无法弄清楚如何(正确)绑定Global.asax.cs MvcApplication代码中的接口.

我最终使用了一个hack(创建一个返回bootstrap.kernel的公共NinjectMVC3.GetKernel()方法).但是,这将被弃用,必须有一个正确的方法来做到这一点,我没有看到.

这是我的代码:

public class LogFilterAttribute : ActionFilterAttribute
{
    private IReportingService ReportingService { get; set; }
    public LogFilterAttribute( IReportingService reportingService )
    {
        this.ReportingService  = reportingService;
    }
    ...
}

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterGlobalFilters( GlobalFilterCollection filters )
    {
        filters.Add( new HandleErrorAttribute() );
        filters.Add( new LogFilterAttribute()  );
    }
    ...
    protected void Application_Start()
    {
        ...
        RegisterGlobalFilters( GlobalFilters.Filters );
        // NOTE hack:
        var kernel = NinjectMVC3.GetKernel();
        var logger = kernel.Get<ILogger>();
        var bw = new BackgroundWork(logger);
        Application["BackgroundWork"] = bw; …
Run Code Online (Sandbox Code Playgroud)

ninject asp.net-mvc-3

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

在Ruby中以块的形式读取文件

我需要以MB块的形式读取一个文件,有没有更简洁的方法在Ruby中执行此操作:

FILENAME="d:\\tmp\\file.bin"
MEGABYTE = 1024*1024
size = File.size(FILENAME)
open(FILENAME, "rb") do |io| 
  read = 0
  while read < size
    left = (size - read)
    cur = left < MEGABYTE ? left : MEGABYTE
    data = io.read(cur)
    read += data.size
    puts "READ #{cur} bytes" #yield data
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby

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

内核与系统中的Windows进程

我在内核和用户模式中有一些与Windows进程相关的问题.

如果我有一个hello world应用程序,以及一个公开新系统调用的hello world驱动程序foo(),我很好奇我在内核模式下能做什么,不能做什么.

对于初学者来说,当我编写新的hello world应用程序时,我会获得一个新进程,这意味着我拥有自己的用户模式VM空间(让它保持简单,32位窗口).所以我有2GB的空间,我"拥有",我可以偷看,直到我心中的内容.但是,我受到我的程序的约束.我不能(不要让共享内存进入这个)触摸任何人的记忆.

如果,我写这个hello world驱动程序,并从我的用户应用程序调用它,我(驱动程序代码)现在处于内核模式.

第一个澄清/问题:我仍处于与用户模式应用程序相同的过程中,对吗?仍然有相同的PID?

内存问题:内存作为虚拟机呈现给我的进程,即使我有1GB的内存,我仍然可以访问4GB内存(2GB用户/ 2GB内核 - 不关注服务器上的交换机细节,或者具体,只需一个这里的一般假设).作为一个用户进程,我无法窥视任何内核模式的内存地址,但我可以做任何我想要的用户空间,对吗?

如果我调用我的hello world驱动程序,从驱动程序代码中,我是否仍然拥有相同的用户模式内存视图?但是现在我还可以在内核模式下访问任何内存?

这个内核模式是内存SHARED(与用户模式不同,这是我自己的进程拷贝)?也就是说,编写驱动程序更像是为单个进程编写线程应用程序(操作系统除外?)

下一个问题.作为驱动程序,我可以更改正在运行的进程吗?说,我知道另一个应用程序(比如用户模式的web服务器),并为该进程加载VM,更改它的指令指针,堆栈,甚至将不同的代码加载到进程中,然后切换回我自己的应用程序?(我不想在这里做任何邪恶的事情,我只是好奇它在内核模式下的真正含义)?

此外,一旦进入内核模式,我可以阻止操作系统抢占我吗?我认为(在Windows中)您可以设置您的IRQL级别来执行此操作,但即使在阅读Solomons书籍(Inside Windows ...)之后,我也不完全理解这一点.我将问另一个与IRQL/DPC直接相关的问题但是,现在,我想知道内核驱动程序是否有能力将IRQL设置为High并接管系统.

更多内容,但这些问题的答案将有所帮助.

windows operating-system kernel interrupt dispatcher

8
推荐指数
2
解决办法
3740
查看次数

什么使ASP.NET项目成为应用程序vs库?

我继承了一些ASP.NET代码(我是一个操作系统的人,而不是Web开发人员(还是;-)).该解决方案已经重新考虑,其中有多个项目(库和asp.net站点).除了库之外,还有两个asp.net项目(称为MAINSITE和SUBSITE).只有MAINSITE被用作官方网站(作为asp.net网站),MAINSITE依赖于SUBSITE asp.net网站中的代码,但不使用该网站本身.我试图找出如何清理它并将SUBSITE转换为库.

我的快速问题是,每当我调试MAINSITE(设置为默认值)时,它都会运行两个asp.net进程:MAINSITE和SUBSITE.所以,至少,我怎么能避免这种情况呢?有没有快速/临时解决方案?

我的详细问题是:

是什么让asp.net网站成为asp.net网站?例如,在C中,dll和exe之间的差异可以定义(表面上无论如何)作为库的主要和潜在的导出信息的存在(当然,除其他之外).如果我要将exe转换为DLL,我可能会:1.删除主代码2.确保公共接口正确(并正确导出)3.转换makefile以构建dll而不是exe.

有人能指出我对asp.net到.net lib的一些类似步骤吗?也许:1.摆脱index.aspx 2.摆脱web.config 3.删除任何*.cs文件?4.如何更改属性?5.任何陷阱?

非常感谢你的帮助.详细信息:Visual Studio 2008/.NET 3.5

asp.net visual-studio

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

从COM TLB创建头文件

给定一个托管的COM对象和一个关联的tlb文件,我想从一些非托管的C++代码访问它而不使用TLB/import命令.但是使用头文件.

有没有办法从TLB中提取头文件?

谢谢

.net c# c++ com visual-studio

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

扩展类和实例

这个问题有两个部分.

在Ruby Programming Language一书中,有一个使用模块扩展字符串对象和类的示例(第8.1.1节).

第一个问题.为什么如果使用新方法扩展类,然后创建该类的对象/实例,则无法访问该方法?

irb(main):001:0> module Greeter; def ciao; "Ciao!"; end; end
=> nil
irb(main):002:0> String.extend(Greeter)
=> String
irb(main):003:0> String.ciao
=> "Ciao!"
irb(main):004:0> x = "foo bar"
=> "foo bar"
irb(main):005:0> x.ciao
NoMethodError: undefined method `ciao' for "foo bar":String
        from (irb):5
        from :0
irb(main):006:0>
Run Code Online (Sandbox Code Playgroud)

第二部分,当我尝试扩展Fixnum对象时,我得到一个未定义的方法错误.有人可以解释为什么这适用于字符串而不是fixnum?

irb(main):045:0> module Greeter; def ciao; "Ciao!"; end; end
=> nil
irb(main):006:0> 3.extend(Greeter)
TypeError: can't define singleton
        from (irb):6:in `extend_object'
        from (irb):6:in `extend'
        from (irb):6
Run Code Online (Sandbox Code Playgroud)

ruby extension-methods

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

WCF REST RequestInterceptor身份验证

我试图在WCF RequestInterceptor中进行一些基本身份验证.我正在使用这篇文章作为开始.

我遇到的问题是拦截器和服务之间的通信.我没有尝试任何东西似乎工作.到目前为止,我尝试过:

  • OperationContext.Current
  • requestContext.RequestMessage.Properties [HttpRequestMessageProperty.Name] ["foo"] = value
  • HttpContext.Current.Request

但无论我设置什么,我似乎无法在服务行为本身访问它:

[AspNetCompatibilityRequirements( RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed )]
[ServiceBehavior( InstanceContextMode = InstanceContextMode.Single )]
public class AdvertiserService : ApiServiceBase<AdvertiserDataAccessor>, IAdvertiserService
{
    [WebGet( UriTemplate = "" )]
    public List<Advertiser> GetAdvertisers()
    {
        var request = HttpContext.Current.Request;
        var headers = HttpContext.Current.Request.Headers;
        var p = HttpContext.Current.Request.Headers["Principal"];

        OperationContext ctx = OperationContext.Current;
     }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 如何在Interceptor和服务之间传递数据?

  2. 是否有一种标准方法可以在它们之间传递身份验证信息(注意,身份验证信息是数据库中的UID,而不是Windows身份)?

谢谢

authentication rest wcf wcf-security

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