免责声明:我已经尝试使用谷歌搜索可以做我想要的东西,但没有运气.我希望这里有人可以伸出援助之手.
我有一个.NET类库,可以使用WSE 2.0库访问安全的Web服务.Web服务为中央数据库提供了一个前端(它实际上是跨越多个客户的数据共享网络的一部分),类库提供了一个围绕Web服务调用的简单包装,使其可以从传统的VB6应用程序访问.遗留应用程序使用类库来检索和发布Web服务的信息.目前,应用程序和类库DLL都安装在多个工作站的客户端.
问题是我们正在访问的Web服务使用HTTPS,并且需要向Web服务提供有效的X509客户端证书才能访问它.由于我们的所有组件都存在于客户端计算机上,因此导致了部署问题.例如,我们必须在每台客户端计算机上下载并安装每用户证书,每个用户可能需要通过我们的应用程序访问Web服务.更重要的是,必须通过VPN(特别是OpenVPN)访问Web服务器本身,这意味着必须在每台客户端计算机上安装和配置VPN客户端.这是一个主要的痛苦(我们的一些客户有几十个工作站).
建议的解决方案是将所有这些逻辑移动到客户站点上的中央服务器.在这种情况下,我们的遗留应用程序将与本地服务器通信,然后本地服务器将关闭并转发请求到真正的Web服务.此外,作为简化和集中部署工作的一部分,所有X509证书都将安装在服务器上,而不是安装在每台客户端计算机上.
到目前为止,我们已经提出了三个选择:
HostSOAP消息的头部和路由相关部分(因此它们指向真实的Web服务器),打开与真实Web的SSL连接服务器,向服务器提供正确的客户端证书(基于用户名到证书的映射),转发修改后的请求,读取响应,将其转换回明文,然后将其发送回客户端.尝试查找和/或编写SOAP代理服务器的基本原理是我们现有的.NET包装器库根本不需要修改.我们只需将它指向代理服务器而不是真正的Web服务端点,使用普通的HTTP连接而不是HTTPS.代理服务器将处理请求,修改它以便真正的Web服务接受它(例如更改SOAPAction标头以使其正确),处理SSL /证书握手,并将原始响应数据发送回客户.
然而,这对我来说听起来像是一个可怕的黑客.那么,我的选择在这里呢?
我们试图解决的关键问题是(a)集中存储证书的位置以简化证书的安装和管理,以及(b)进行设置,以便与Web服务器的VPN连接仅发生在一台机器上,而不是需要每个客户都安装了VPN客户端软件.
请注意,我们不控制托管Web服务的Web服务器.
编辑:为了澄清,我已经在C#中实现了一个(相当糟糕的)代理服务器,它确实符合要求,但是对于我解决这个问题的整个方法,我觉得从根本上说是错误的.所以,最终,我正在寻找保证我在正确的轨道上,或者有用的建议告诉我,我正在以完全错误的方式解决这个问题,以及任何提示做得更好的方法(如果有的话,我怀疑有).
我有一个自定义编写的CMS,它使用CKEditor*(FCKEditor v3)来编辑内容.我也使用jQuery Validation插件在基于AJAX的提交之前检查所有字段的错误.我正在使用serialize()函数将数据传递给PHP后端.
问题是,serialize设法正确获取所有字段,但在CKEditor中输入的实际内容除外.像所有其他WYSIWYG编辑器一样,这个编辑器也会覆盖现有文本框上的iframe.并且序列化忽略iframe并且只查看内容的文本框,当然,它没有找到,因此返回一个空白内容正文.
我的方法是在CKEditor 的onchange事件上创建一个钩子,并同时更新文本框(CKEDITOR.instances.[textboxname].getData()返回内容)或其他一些隐藏字段,并在编辑器中进行任何更改.
但是,由于CKEditor仍然处于测试阶段且严重缺乏文档,因此我无法找到合适的API调用,这样我就可以这样做.
有没有人知道如何解决这个问题?
我想确定一个多边形并实现一个算法,该算法将检查一个点是在多边形内部还是外部.
有谁知道是否有任何类似算法的可用示例?
如何将值从纳秒转换为秒?
这是代码段:
import java.io.*;
import java.util.concurrent.*;
..
class Stamper {
public static void main (String[] args) {
long start = System.nanoTime();
//some try with nested loops
long end = System.nanoTime();
long elapsedTime = end - start;
System.out.println("elapsed: " + elapsedTime + "nano seconds\n");
//convert to seconds
TimeUnit seconds = new TimeUnit();
System.out.println("which is " + seconds.toSeconds(elapsedTime) + " seconds");
}}
Run Code Online (Sandbox Code Playgroud)
错误是
Stamper.java:16: enum types may not be instantiated.
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
我正在使用nHibernate的旧linq提供程序,耐心等待新的提供者出来.我相信这会给我带来很大的痛苦.无论如何,我在下面的代码中遇到问题,因为它生成了"未设置为对象实例的对象引用".行"c.Disciplines.Any(d => disciplines.Contains(d))"是导致问题的那一行.使用nHibernate Linq这样的语句是否有任何已知问题?
var agencies = m_AgencyRepository.Linq;
Discipline[] disciplines = user.Disciplines.ToArray<Discipline>();
return (from c in agencies
where (String.IsNullOrEmpty(criteria.AgencyName) || c.AgencyName.Contains(criteria.AgencyName))
&& (criteria.AgencyType == null || c.AgencyType.AgencyTypeId == criteria.AgencyType)
&& (String.IsNullOrEmpty(criteria.AgencyLevel) || c.AgencyLevel.AgencyLevelId == criteria.AgencyLevel)
&& (c.Disciplines.Any(d => disciplines.Contains(d)))
select c)
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetEntityName(ICriteria subcriteria, String propertyName)
at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetType(ICriteria subcriteria, String propertyName)
at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetTypeUsingProjection(ICriteria subcriteria, String propertyName)
at NHibernate.Criterion.InExpression.GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
at NHibernate.Criterion.Junction.GetTypedValues(ICriteria criteria, ICriteriaQuery criteriaQuery)
at NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetQueryParameters()
at NHibernate.Criterion.SubqueryExpression.InitializeInnerQueryAndParameters(ICriteriaQuery criteriaQuery)
at NHibernate.Criterion.SubqueryExpression.ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary`2 enabledFilters)
at …Run Code Online (Sandbox Code Playgroud) 我开始在笔记本电脑上使用Ubuntu 9.04.我真正想要的是能够在Ubuntu上编写我的C#项目,包括单元测试.任何人都可以指导我如何设置它?
我正在尝试编写这样的日历函数
function get_date($month, $year, $week, $day, $direction)
{
....
}
Run Code Online (Sandbox Code Playgroud)
$week是一个整数(1,2,3 ......),$ day是一天(太阳,周一,......)或数字,以较容易的为准.方向有点混乱,因为它做了不同的计算.
举个例子,我们来电
get_date(5, 2009, 1, 'Sun', 'forward');
它使用默认值,并获得5月的第一个星期日,即2009-05-03.如果我们打电话
get_date(5, 2009, 2, 'Sun', 'backward');
,它返回五月的最后一个星期日,即2009-05-24.
我试图在for循环中动态填充字典,如下所示:
伪代码
myObject = new Object
myDict = new Dictionary
for(int i; i < 10;i++)
myObject.value1 = new data from somewhere
myObject.value2 = new data from somewhere
myDic = value:myObject key:i
end for
Run Code Online (Sandbox Code Playgroud)
所以我的问题是在objective-c中,我可以继续分配新数据myObject而不是每次都在循环中释放它吗?我仍然试图在objective-c中找出内存管理.
c# ×3
ajax ×1
algorithm ×1
c#-2.0 ×1
ckeditor ×1
cocoa ×1
datetime ×1
function ×1
iframe ×1
installation ×1
java ×1
jquery ×1
linq ×1
mono ×1
monodevelop ×1
nhibernate ×1
objective-c ×1
php ×1
qt ×1
replication ×1
ssl ×1
timeunit ×1
ubuntu-9.04 ×1
vpn ×1
web-services ×1