我正在创建自托管Web API服务.为了保护它,我已经研究并实现了这篇文章,使用makecert成功生成了本地SSL证书并且我的服务已经过身份验证,如果我正在使用,则会生成令牌.
http://localhost/webapi/authentication/authenticate
Run Code Online (Sandbox Code Playgroud)
链接,但是当我尝试使用HTTPS访问我的服务时,我会在Firefox上关注:
SSL_ERROR_RX_RECORD_TOO_LONG
而对于同样的要求,Fiddler告诉我:
HTTP/1.1 502 Fiddler - 连接失败日期:2013年8月26日星期一10:44:27 GMT内容类型:text/html; charset = UTF-8连接:关闭时间戳:13:44:27.433
[Fiddler]与localhost的套接字连接失败.
无法与server.fiddler.network.https协商HTTPS连接>无法保护localhost的现有连接.由于意外的数据包格式,握手失败.
我的自主配置:
private HttpSelfHostServer _server;
private ExtendedHttpsSelfHostConfiguration _config;
public const string ServiceAddress = "https://localhost/webapi";
_config = new ExtendedHttpsSelfHostConfiguration(ServiceAddress);
_server = new HttpSelfHostServer(_config);
_server.OpenAsync();
Run Code Online (Sandbox Code Playgroud)
从这篇文章中获取的ExtendedHttpSelfHostConfiguration 是:
public class ExtendedHttpSelfHostConfiguration : HttpSelfHostConfiguration
{
public ExtendedHttpSelfHostConfiguration(string baseAddress) : base(baseAddress) { }
public ExtendedHttpSelfHostConfiguration(Uri baseAddress) : base(baseAddress) { }
protected override BindingParameterCollection OnConfigureBinding(HttpBinding httpBinding)
{
if (BaseAddress.ToString().ToLower().Contains("https://"))
{
httpBinding.Security.Mode = HttpBindingSecurityMode.Transport;
}
return base.OnConfigureBinding(httpBinding); …Run Code Online (Sandbox Code Playgroud) 我是Web API使用的新手,我遇到问题的问题我无法找到解决方案.常见的问题是,当人们得到而不是application/x-www-form-urlencoded媒体类型样本时
无法为媒体类型'application/x-www-form-urlencoded'生成样本.不能使用格式化程序'FormUrlEncodedMediaTypeFormatterTracer'来写入'Task'类型.
常见的建议是在Config文件中指定自己的示例,但我想知道,我可以删除此媒体类型帮助部分吗?
config.SetSampleForType("", new MediaTypeHeaderValue("application/x-www-form-urlencoded"), typeof(object));
Run Code Online (Sandbox Code Playgroud)
给我一个空白的部分.
提前致谢!
我正在构建 WCF 休息服务,它是客户端。我的计划是,该客户对服务知之甚少,只知道调用方法和预期结果的正确 URL。
我的服务合同是:
[WebInvoke(Method="POST", UriTemplate="/tasks")]
[OperationContract]
void SubmitTask(Transaction task);
[WebGet(UriTemplate = "/tasks/{taskId}")]
[OperationContract]
[XmlSerializerFormat]
Transaction GetTask(string taskId);
Run Code Online (Sandbox Code Playgroud)
SubmitTask 是这样实现的:
SubmitTask(Transaction task)
{
DoSomethingWithTask(task);
task.Status = "SomeStatus";
DoSomethingElseWithTaks(task);
task.Status = "SomeOtherStatus";
}
Run Code Online (Sandbox Code Playgroud)
我对客户的期望:
ButtonClick()
{
SubmitTask(task);
while(true)
{
string status = Transaction GetTask(task.taskId).Status;
Textbox.Text+= status;
if(status==ok)
break;
Thread.Sleep(1000);
}
}
Run Code Online (Sandbox Code Playgroud)
问题是 - GetTask 不在服务端执行,而所有 SubmitTask 操作都已完成,所以我只在客户端获得最后一个任务状态。在这种情况下如何实现异步操作?
提前致谢!
有没有有效的方法来过滤面板的子控件的类型,例如Label属性,例如Tag值?
例如我有一个 panel1:
label1.Tag=1;
label2.Tag=1;
label3.Tag=2;
label4.Tag=3;
textBox1.Tag=1;
panel1.Add(controls above);
Run Code Online (Sandbox Code Playgroud)
我想获取集合中的所有标签,或者所有带有Tag=1, 或and在语句之间使用的控件。
我已经创建了一个类库项目,并安装了Newtonsoft.Json NuGet包.此操作添加了一个app.config文件,其中包含:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
Run Code Online (Sandbox Code Playgroud)
然后我让类库COM可见:
当我尝试在另一个C#WinForms项目中使用我的类库时,我收到了错误:
System.IO.FileLoadException:无法加载文件或程序集"Newtonsoft.Json,Version = 4.5.0.0,Culture = neutral,PublicKeyToken = 30ad4fe6b2a6aeed"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
直到我在WinForms项目中添加了相同的app.config行.
现在我正在尝试在Microsoft Word VBA开发人员中使用我的程序集(通过COM引用),我收到了相同的错误,但是我无法为Microsoft Word制作app.config文件,是吗?有什么办法,这个问题怎么解决?
提前致谢!