我有一个使用 WSDL.exe 创建的简单 C# Web 服务代理类。我正在调用远程 Web 服务上的一个方法,它包括一堆我不想要的 WS-Addressing 和 WS-Security 标头(并且服务器正在窒息)。这是原始肥皂请求的示例:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<soap:Header>
<wsa:Action></wsa:Action>
<wsa:MessageID>urn:uuid:22f12267-b162-4703-a451-2d1c5c5a619b</wsa:MessageID>
<wsa:To>http://example.com/wstest</wsa:To>
<wsse:Security>
<wsu:Timestamp wsu:Id="Timestamp-5c9f0ef0-ab45-421d-a633-4c4fad26d945">
<wsu:Created>2009-04-15T16:27:25Z</wsu:Created>
<wsu:Expires>2009-04-15T16:32:25Z</wsu:Expires>
</wsu:Timestamp>
</wsse:Security>
</soap:Header>
<soap:Body>
<Func1 xmlns="http://example.com">
<arg_1 xmlns="">blah</arg_1>
<arg_2 xmlns="">blah2</arg_2></arg_2>
</Func1>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
但我不关心 WS-Addressing/WS-Security 的东西。我没有做任何事情来包含它。.NET WSE 3.0 包似乎默认添加它们。有没有办法摆脱这些?我在代理对象上看不到任何允许我删除这些部分的属性。我试过了:
proxyObject.Addressing.Clear();
proxyObject.Security.Clear();
Run Code Online (Sandbox Code Playgroud)
当我调用我的 Web 服务方法时,这些会导致空引用异常。
我希望 SOAP 请求如下所示:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
</soap:Header>
<soap:Body>
<Func1 xmlns="http://example.com">
<arg_1 xmlns="">blah</arg_1>
<arg_2 xmlns="">blah2</arg_2></arg_2>
</Func1>
</soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)
提前致谢
在Perl中,我想在特定时区查找本地时间.我一直在使用这种技术:
$ENV{TZ} = 'America/Los_Angeles';
my $now = scalar localtime;
print "It is now $now\n";
# WORKS: prints the current time in LA
Run Code Online (Sandbox Code Playgroud)
但是,这是不可靠的 - 特别是,如果我在设置$ ENV {TZ}之前添加另一个localtime()调用,它会中断:
localtime();
$ENV{TZ} = 'America/Los_Angeles';
my $now = scalar localtime;
print "It is now $now\n";
# FAILS: prints the current time for here instead of LA
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
我参与了这个项目,我们正在构建大量的遗留代码.我有一个关于一个大的java bean对象的特殊情况,它必须通过线路传输.所以我的第一个想法就是让它变得不可变和可序列化.这点我面临一些困难的选择: -
理想情况下,我想要一些方法来自动生成此类的不可变,可序列化版本.我没有以任何方式重构或改变这个类的范围,我真的很讨厌必须复制粘贴具有不同名称的类?
假设我放弃了1即我实际上选择复制巨大的javabean类的代码,我仍然会处于一个令人讨厌的情况,即必须编写一个带有20-25个参数的构造函数才能使这个类不可变.除了构造函数注入之外,什么是使类不可变的更好方法?
感谢致敬,
我们的网站似乎比以前慢了,我该如何测试呢?有没有办法找到原因?(例如游客太多).
谢谢.
我有一个程序需要x64和x86 dll(它在运行时确定它需要哪些),但在尝试创建设置时,它会抱怨:
文件AlphaVSS.WinXP.x64.dll"定位'AMD64’是不是个项目的目标平台兼容'86’
文件AlphaVSS.Win2003.x64.dll"定位'AMD64’是不是个项目的目标平台'86’兼容的
文件AlphaVSS .Win2008.x64.dll'目标'AMD64'与该项目的目标平台'x86'不兼容
如何让我的设置目标同我的程序一样?
为什么我必须在方法内初始化变量?
int test1; // Not initialized, but ok
public int Foo()
{
int test2; // Not initialized
int test3 = test1; // Ok
int test4 = test2; // An error
}
Run Code Online (Sandbox Code Playgroud) 如果您将以下类作为网络数据包负载:
class Payload {char field0; int field1; char field2; int field3; };
在通过套接字接收数据时,使用像Payload这样的类是否会使数据的接收者容易出现对齐问题?我认为该类要么需要重新排序,要么添加填充以确保对齐.
要么重新排序:
class Payload
{
int field1;
int field3;
char field0;
char field2;
};
Run Code Online (Sandbox Code Playgroud)
或添加填充:
class Payload
{
char field0;
char pad[3];
int field1;
char field2;
char pad[3];
int field3;
};
Run Code Online (Sandbox Code Playgroud)
如果由于某种原因重新排序没有意义,我认为添加填充将是首选,因为它会避免对齐问题,即使它会增加类的大小.
您对网络数据中的这种对齐问题有什么经验?
我正在使用带有ObjectDataSource的FormView并使用<%#Bind("WhateverProp")%>绑定 - 并且我的所有可空列都返回其中的类型的默认值.
看起来FormView对象没有像其他绑定容器那样的ConvertEmtpyStringToNull属性.我发现文章暗示这是VS 2005/.Net 2.0中的一个错误 - 但是没有看到任何说法是什么决议.
有没有人有任何关于如何解决这个问题的建议,而不仅仅是重新捕获ODS_Inserting事件中的所有字段?我宁愿不必编写代码来重新绑定表单上的所有绑定字段,只是为了测试空值.
当insert-kbd-macro用于保存命名键盘宏时,我得到"不可读"的Lisp代码
(fset 'ppsql
(lambda (&optional arg) "Keyboard macro." (interactive "p") (kmacro-exec-ring-item (quote ([134217788 134217765 44 return 44 17 10 return 33 134217765 102 102 backspace 114 111 109 return 17 10 102 111 109 backspace backspace 114 111 return 33] 0 "%d")) arg)))
Run Code Online (Sandbox Code Playgroud)
我宁愿有类似以下的东西:
(fset 'move-line-down
[?\C-a ?\C-k delete down ?\C-y return up])
Run Code Online (Sandbox Code Playgroud)
IIRC我用同样的方法来记录,名称,同时插入键盘宏:F3,F4,name-last-kbd-macro.
是否可以以可读格式获取第一个宏?
我有一个练习要做我需要用C编码的代码,相当于cat和nl的命令只使用系统调用.给我们的系统调用是open(),close(),read()和write().
我已经完成了"猫"等效,它似乎运行正常,现在我需要做"nl"一个,但我遇到麻烦,我将如何逐行编写.
我们的想法是使用尽可能少的系统调用.
我知道我需要在缓冲区找到'\n',我可以做一段时间循环缓冲区并找到'\n'位置(让我们称之为X)然后将X个字节写入stdout.
但循环遍历缓冲区中的所有字符搜索行的末尾对我来说感觉不对,但我不知道我怎么能这样做...
重要编辑:
我想你们中有些人错过了我的问题......我不需要解释如何做到这一点,这不是我的问题.我知道该怎么做(或者有一个非常好的主意,我还没有尝试过)."问题"是,它感觉不对遍历缓冲区,文件也好,都烧焦成炭,找到行的末尾(无论怎样).我不是说这不是答案,或者我不允许这样做,我只是在谈论我的想法.这似乎是一种奇怪的方式,这就是全部......但如果就是这样,那就是我的问题的答案.
我很欣赏每个人的帮助:)
c# ×3
c ×2
.net-3.5 ×1
asp.net ×1
bandwidth ×1
c++ ×1
data-binding ×1
emacs ×1
formview ×1
immutability ×1
installation ×1
java ×1
javabeans ×1
keyboard ×1
linux ×1
lisp ×1
macros ×1
payload ×1
perl ×1
sockets ×1
system-calls ×1
testing ×1
web-services ×1
wse3.0 ×1