小编Chr*_*ris的帖子

asp.net mvc复选框不一致

我正在使用ASP.NET MVC表单上的复选框,如下所示:

<%=Html.CheckBox("AgreeToRules", Model.AgreeToRules)%>
Run Code Online (Sandbox Code Playgroud)

模型上的AgreeToRules属性是一个布尔值.在测试期间,这一切都很好.但是,现在我们已经开始使用这个应用程序了,我发现以下消息传递中出现了相对较小但很多的错误:

System.Web.HttpUnhandledException:抛出了类型'System.Web.HttpUnhandledException'的异常.---> System.InvalidOperationException:从类型'System.String'到类型'System.Boolean'的参数转换失败.有关更多信息,请参阅内部异常.---> System.FormatException:Y不是Boolean的有效值.---> System.FormatException:String未被识别为有效的布尔值.

这似乎发生在视图引擎尝试在帖子后呈现表单时,并且从ValueProvider返回的复选框的值如下所示:

Y,假

要么

N,假

以原始形式呈现的html如下所示:

<input id="AgreeToRules" name="AgreeToRules" type="checkbox" value="true" />
<input name="AgreeToRules" type="hidden" value="false" />
Run Code Online (Sandbox Code Playgroud)

在测试期间,我期望(并显示)发布的值看起来像:

真假

如果选中或

如果没有检查.那么N和Y来自哪里?

我将用户代理添加到从错误处理程序返回的信息列表中,并且出现(到目前为止)所有错误都发生在带有FF 3.0.10的Windows XP下,但这正是我测试过的并且问题没有在测试过程中存在

有什么想法吗?

checkbox asp.net-mvc

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

WPF - 用于查看模型属性的数据绑定窗口标题

我正在尝试将我的窗口标题绑定到我的视图模型中的属性,如下所示:

Title="{Binding WindowTitle}"
Run Code Online (Sandbox Code Playgroud)

该属性如下所示:

    /// <summary>
    /// The window title (based on profile name)
    /// </summary>
    public string WindowTitle
    {
        get { return CurrentProfileName + " - Backup"; }
    }
Run Code Online (Sandbox Code Playgroud)

CurrentProfileName属性派生自另一个属性(CurrentProfilePath),只要有人打开或保存配置文件,该属性就会设置.在初始启动时,窗口标题设置正确,但是当CurrentProfilePath属性发生更改时,更改不会像我预期的那样冒泡到窗口标题.

我不认为我可以在这里使用依赖属性,因为该属性是派生属性.派生它的基本属性是依赖属性,但似乎没有任何影响.

如何根据此属性使表单标题自我更新?

data-binding wpf window

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

C#插件架构问题

我正在研究类似于C#中Nagios的系统监控应用程序.我有一个插件接口定义为:

public interface IPlugin
{
    PluginResult Execute();
}
Run Code Online (Sandbox Code Playgroud)

每个插件,根据其功能,将具有可变数量的参数.例如,ping插件可能会占用主机名,数据包数,超时值等.我希望用户能够在我的用户界面中为每个服务定义这些参数,但很明显这些参数在应用程序发现哪些插件可用.我很好奇其他人如何设计一个插件,以便应用程序可以发现这些变量参数.

现在,作为一个例子,我有一个ping插件:

public class PingPlugin : IPlugin
{
    private const string RESULT_MESSAGE = "Average ms: {0}; Packet loss: {1}";

    private string _hostname;
    private int _packets;
    private int _timeout;
    private int _warningTimeThreshold;
    private int _warningLossThreshold;
    private int _errorTimeThreshold;
    private int _errorLossThreshold;

    public PingPlugin(
        string hostname,
        int packets,
        int timeout,
        int warningTimeThreshold,
        int warningLossThreshold,
        int errorTimeThreshold,
        int errorLossThreshold)
    {
        _hostname = hostname;
        _packets = packets;
        _timeout = timeout;
        _warningTimeThreshold = warningTimeThreshold;
        _warningLossThreshold = warningLossThreshold; …
Run Code Online (Sandbox Code Playgroud)

c# architecture

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

NHibernate事件监听器

我正在尝试使用FluentNHibernate向我的NHibernate配置添加IPostLoadEventListener的实现.我可以这样说明:

如何通过流畅的nhibernate添加事件监听器?

但是,创建一个新数组来替换旧数组会完全丢弃任何现有的事件侦听器.我可以像这样绕过它:

return Fluently.Configure()
    .Database(config)
    .Mappings(m => m.AutoMappings.Add(mappings))
    .ExposeConfiguration(cfg =>
        {
            cfg.EventListeners.PostLoadEventListeners =
                new IPostLoadEventListener[] { 
                    new UtcDateEventListener(),
                    new DefaultPostLoadEventListener() // <<< this one is the default
                };
            cfg.EventListeners.SaveOrUpdateEventListeners =
                new ISaveOrUpdateEventListener[] { 
                    new UtcDateEventListener(),
                    new DefaultSaveOrUpdateEventListener() // <<< this one is the default
                };
        })
    .BuildConfiguration()
    .BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)

但我只通过单步执行代码来确定我覆盖的默认事件监听器.我想添加我的事件监听器而不会覆盖任何现有的事件监听器,但是就像我上面所示,这样做对我来说似乎非常臭.现有的事件侦听器作为数组公开(而不是集合或列表,这将更有意义).有没有更清洁的方法来处理这个?

nhibernate

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

使用客户端IP地址的WCF安全性

我有一个WCF服务,提供对某些数据的访问.我们的客户要求限制此服务,以便给定用户只能在特定时间段内拨打这么多电话.我的想法是建立一个请求速率限制,并在超过该限制时对该IP地址发出临时禁止.

但是,似乎只有一种方法可以使用WCF获取调用者的IP:

var context = OperationContext.Current;
var props = context.IncomingMessageProperties;
var endpoint = props[RemoteEndpointMessageProperty.Name];
return ((RemoteEndpointMessageProperty)endpoint).Address;
Run Code Online (Sandbox Code Playgroud)

这对我来说根本没用,因为RemoteEndpointMessageProperty是使用HttpContext的Request.UserHostAddress属性设置的.通常,这没关系,除了我们的Web服务位于负载均衡器后面,导致Request.UserHostAddress始终显示负载均衡器的IP,而不是原始调用者.

我知道使用X-Forwarded-For等,并且实际上已经在我们的负载均衡器上配置了,但是似乎没有任何方法可以挂钩到http请求来访问标题而不是设置WCF服务以ASP.NET兼容模式运行.这真的是我唯一的选择吗?

wcf

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

如何拦截WCF故障并返回自定义响应?

考虑以下非常基本的WCF服务实现:

public enum TransactionStatus 
{
    Success = 0,
    Error = 1
}

public class TransactionResponse
{
    public TransactionStatus Status { get; set; }
    public string Message { get; set; }
}


[ServiceContract]
[XmlSerializerFormat]
public interface ITestService
{
    [OperationContract]
    TransactionResponse DoSomething(string data);
}   

public class TestService : ITestService
{
    public TransactionResponse DoSomething(string data)
    {
        var result = ProcessData(data); // may throw InvalidOperationException
        return new TransactionResponse() 
        {
            Status = TransactionStatus.Success,
            Message = result                
        };            
    }

    private string ProcessData(string data) 
    {
        if (data …
Run Code Online (Sandbox Code Playgroud)

wcf exception-handling

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

ASP.NET Web API是否支持IValidatableObject?

我有一个实现IValidatableObject的视图模型,并且还有几个验证属性.当我尝试在我的ApiController上调用一个动作时,只执行属性验证.ASP.NET Web API不支持IValidatableObject吗?复杂验证的替代方法是什么,不能用单个属性表示?

编辑:在某个地方,我必须搞砸了一些东西.验证神秘地开始按预期工作.看起来默认情况下肯定支持IValidatableObject.

validation data-annotations ivalidatableobject asp.net-web-api

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

无法加载"Microsoft.CodeAnalysis.BuildTasks.Csc"任务

我正在尝试将新创建的asp.net 4.6 Web项目发布到Azure Web应用程序并收到以下错误:

远程:D:\ Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.CSharp.targets(316,9):错误MSB4062:无法从程序集D加载"Microsoft.CodeAnalysis.BuildTasks.Csc"任务:\家\网站\库\包\ Microsoft.Net.Compilers.1.0.0 \建.. \工具\ Microsoft.Build.Tasks.CodeAnalysis.dll.无法加载文件或程序集"Microsoft.Build.Utilities.Core,Version = 14.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"或其依赖项之一.该系统找不到指定的文件.确认声明是否正确,程序集及其所有依赖项是否可用,以及该任务是否包含实现Microsoft.Build.Framework.ITask的公共类.[d:\家\网站\库\ Web应用程序\ WebApp.csproj]

通过我的本地计算机上的Visual Studio 2015,一切都很好.我认为Azure网络应用程序在发布时都支持VS 2015 RTM,但看起来他们没有安装MSBuild 14.0.是否有解决此问题的解决方案或路线图?

azure azure-web-sites visual-studio-2015

5
推荐指数
2
解决办法
9793
查看次数

如何在C#中解析和使用htpasswd文件

我想在MVC中将Apache的htpasswd util与我的自定义BasicAuthenticationAttribute一起使用。但是,基于htpasswd文档,我不确定如何计算密码哈希值以与htpasswd文件进行比较。是否有托管的.NET库或一些简单的文档可以帮助我理解这一点?

编辑:海因兹(Heinzi)指出的问题对SHA很好,但我也希望能够处理MD5(APR1?)哈希变量。我已经看到了一些代码示例,但是它们对于我来说太不透明了。同样,对于Apache文档中链接到的实际代码文件。

理想情况下,我希望能够获取任何客户端的.htpasswd文件并将其放入我的ASP.NET站点中以进行身份​​验证,而不受使用哪种哈希方法的限制。

c# .htpasswd

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

如何将int []中的各个元素位置相加?

假设我有以下内容:

var a1 = new [] { 2, 7, 9 };
var a2 = new [] { 6, 3, 6 };
Run Code Online (Sandbox Code Playgroud)

我想最终得到:

var sum = new [] { 8, 10, 15 };
Run Code Online (Sandbox Code Playgroud)

到达那里最快捷的方式是什么?

c#

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