Asp.net mvc Asp.Net MVC模型绑定到属性类型System.Uri时遇到Mono问题
在VisualStudio上调试时,它的性能非常好。即使没有默认构造函数,也只有参数化的 但是当托管在Asp.net mvc Asp.Net MVC模型绑定到属性类型System.Uri时遇到Mono问题,asp.net-mvc,nginx,mono,Asp.net Mvc,Nginx,Mono,在VisualStudio上调试时,它的性能非常好。即使没有默认构造函数,也只有参数化的 但是当托管在linux服务器中的nginx实例上时。它抛出System.UriFormatException:绝对URI太短 尽管我已经实现了一种变通方法,将其绑定到字符串类型,然后将其转换为Uri。但这不是一种更干净的方式 有人对这种行为有什么想法吗?好的,我终于明白了。在DefaultModelBinder中执行GetPropertyValue时,它使用Object.Equals(obj,string.
linux服务器中的nginx
实例上时。它抛出System.UriFormatException:绝对URI太短
尽管我已经实现了一种变通方法,将其绑定到字符串类型,然后将其转换为Uri。但这不是一种更干净的方式
有人对这种行为有什么想法吗?好的,我终于明白了。在DefaultModelBinder中执行GetPropertyValue
时,它使用Object.Equals(obj,string.empty)
将对象与string.empty进行内部比较
当obj是System.Uri类型时,作为Object.Equals调用Uri.Equals,然后尝试将emtoy字符串类型转换为Uri类型,这会引发异常
请参阅中的代码片段
解决方案:
为类型Uri和BindModel集中创建自定义绑定器
bindingContext.ModelMetadata.ConvertEmptyStringToNull = false;
bindingContext.ModelMetadata.ConvertEmptyStringToNull = false;