我试图在Cherrypy的服务器上运行Bottle.我想获得SSL支持.
到目前为止,我试过这个:
from bottle import Bottle, route
from cherrypy import wsgiserver
app = Bottle()
@app.route("/")
def index():
return "Hello"
server = wsgiserver.CherryPyWSGIServer(
('0.0.0.0', 443), app)
server.ssl_adapter.private_key = 'server.key'
server.ssl_adapter.certificate = 'server.crt'
server.start()
Run Code Online (Sandbox Code Playgroud)
但是上面抛出了一个ArgumentError,我无法在None对象(ssl_adpater)上设置属性.显然我需要将ssl_adapter属性设置为从SSLAdapter派生的某个对象,但我找不到任何示例.
我使用的是Python 2.7和Cherrypy 3.2.2
谢谢.
我有一堂课:
class Test {
public IPAddress Ip {get; set; }
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,Nswag.AspNetCore位于http://localhost:1234/swagger 的Nswag(包)将其序列化,在预览“示例”输出中:
[
"Ip": {
"AddressFamily": 0,
"ScopeId": 0,
"IsIPv6Multicast": true,
"IsIPv6LinkLocal": true,
"IsIPv6SiteLocal": true,
"IsIPv6Teredo": true,
"IsIPv4MappedToIPv6": true,
"Address": 0
}
]
Run Code Online (Sandbox Code Playgroud)
我想自定义它,以便它仅将 Ip 字段序列化为 astring而没有IPAddress.
为此,我创建了自己的JsonConverter:
public class IPAddressConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return (objectType == typeof(IPAddress));
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
writer.WriteValue(value.ToString());
}
public override …Run Code Online (Sandbox Code Playgroud) 我有一个用户控件,我想这样使用:
// MainPage.xaml
<my:MyControl Data="10" />
<!-- or -->
<my:MyControl Data="{Binding SomeData}" />
Run Code Online (Sandbox Code Playgroud)
这是代码绑定:
public partial class MyControl : UserControl
{
public MyControl() {
InitializeComponent();
}
public const string DataPropertyName = "Data";
public int Data
{
get
{
return (int)GetValue(DataProperty);
}
set
{
SetValue(DataProperty, value);
}
}
public static readonly DependencyProperty DataProperty = DependencyProperty.Register(
DataPropertyName,
typeof(int),
typeof(MyControl),
new PropertyMetadata(10);
}
Run Code Online (Sandbox Code Playgroud)
它的xaml部分是这样的:
<UserControl>
<!-- omitted namespaces etc. -->
<Grid x:Name="LayoutRoot">
<Button x:Name="myButton" Content="{Binding Data}">
<Button.Style>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<TextBlock …Run Code Online (Sandbox Code Playgroud) 我在NancyFX应用程序中使用Fluent验证.使用nuget包安装:Nancy.Validation.FluentValidation
我编写了自己的属性Validator类,并完成了可以通过Strings.invalid_ip属性获取的错误消息的本地化.
所有其他本地化在我的项目中工作正常,Fluent验证例外,它无法在Strings资源管理器类中找到任何属性.
namespace LmsNg.Validators
{
public class IsIpAddressValidator : PropertyValidator
{
public IsIpAddressValidator()
: base(() => Strings.invalid_ip)
//also tried another overload, but the same exception happens
//base("invalid_ip", typeof(Strings))
{
}
protected override bool IsValid(PropertyValidatorContext context)
{
var ip = context.PropertyValue as string;
IPAddress address;
if (ip != null && IPAddress.TryParse(ip, out address))
{
return true;
}
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)

一旦IsIpAddressValidator使用,当验证返回false时,我得到一个例外.
FluentValidation.dll中出现"System.InvalidOperationException"类型的异常,但未在用户代码中处理
System.InvalidOperationExcepction: Could not find a property named 'invalid_ip' on …
我有以下代码处理下载并将图像保存到手机的媒体库.它失败了System.UnauthorizedAccessException,好像有一些跨线程访问.为了我的理解,await语句下面的所有代码都在UI线程上运行,所以这应该不是问题.另外我试过包装下面的代码var stream = await client.OpenReadTaskAsync(this.Url);,Deployment.Current.Dispatcher.BeginInvoke但它没有帮助.:(我在WP8上运行此程序,打算稍后将代码移植到WP7.
private async void OnSaveImageCommand()
{
RunProgressIndicator(true, "Downloading image...");
var client = new WebClient();
try
{
var stream = await client.OpenReadTaskAsync(this.Url);
var bitmap = new BitmapImage();
bitmap.SetSource(stream);
using (var memoryStream = new MemoryStream())
{
var writeableBitmap = new WriteableBitmap(bitmap);
writeableBitmap.SaveJpeg(memoryStream, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight, 0,
100);
memoryStream.SetLength(memoryStream.Position);
memoryStream.Seek(0, SeekOrigin.Begin);
var mediaLibrary = new MediaLibrary();
mediaLibrary.SavePicture("image.jpg", memoryStream);
MessageBox.Show("Image has been saved to the phone's photo album");
}
}
catch
{
MessageBox.Show("Failed to download …Run Code Online (Sandbox Code Playgroud) c# ×2
cherrypy ×1
localization ×1
nancy ×1
nswag ×1
python ×1
silverlight ×1
ssl ×1
swagger ×1
xaml ×1