小编Mar*_*rek的帖子

WCF:(MTOM)有没有办法改变xop中使用的方案:WCF生成的内容引用uris?

http://tempuri/1/number处理流式MTOM请求时,WCF 用于Content-ID uri引用.

有没有办法如何强制WCF为xop使用不同的Content-ID引用:Include?

问题背景:

我正在为支持MTOM的jax ws java web服务构建一个.NET客户端,用于处理流式大数据上传.我手工制作了服务和数据联系人(WSDL生成的合同不正确,不允许流式传输).

问题是Web服务(jax ws)没有收到包含数据的请求主体.

它接收在标头中传输的数据.

我们为ws构建了一个java客户端 - 这个工作正常.

我在发出来自java和wcf的请求时捕获并比较了HTTP流量,唯一的区别在于在发布多部分数据时如何生成Content-ID引用:

  • WCF使用http://tempuri/1/...以编码值产生的Content-ID引用,例如href="cid:http%3A%2F%2Ftempuri.org%2F1%2F634019957020047928"

  • Java客户端使用"电子邮件式"uris,就像 href="cid:3f3ec388-8cd9-47aa-a603-fb1bc17935b8@example.jaxws.sun.com"

以下xop-includes中的这些产量(数据是soap体中唯一的元素)(XOP包含规范)


//WCF:
<Data>
   <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:http%3A%2F%2Ftempuri.org%2F1%2F634019957020047928" />
</Data>

//JAVA:
<Data>
    <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:3f3ec388-8cd9-47aa-a603-fb1bc17935b8@example.jaxws.sun.com"/>
</Data>
Run Code Online (Sandbox Code Playgroud)

稍后,在多部分数据中,内容由未编码的Content-ID引用:

--uuid:7e166bb7-042f-4ba3-b6ef-98fbbc21244b+id=1
Content-ID: <http://tempuri.org/1/634019957020047928>
Content-Transfer-Encoding: binary
Content-Type: application/octet-stream
Run Code Online (Sandbox Code Playgroud)

我想jax Web服务框架中可能存在一个错误,它无法识别WCF生成的+ urlencoded Content-ID uri引用.

有没有办法如何强制WCF为xop使用不同的Content-ID引用:Include?


编辑:我已发现其具有GenerateUriForMimePart方法XmlMtomWriter,这被用于生成内容的ID.

public static string GenerateUriForMimePart(int index)
{
    return string.Format(CultureInfo.InvariantCulture, 
"http://tempuri.org/{0}/{1}", new object[] { index, DateTime.Now.Ticks });
}
Run Code Online (Sandbox Code Playgroud)

似乎ID生成无论如何都是可以覆盖的.

这里描述了类似的问题,提供的答案没有帮助:http://social.msdn.microsoft.com/Forums/en/wcf/thread/f90affbd-f431-4602-a81d-cc66c049e351

wcf soap mtom jax-ws xop

10
推荐指数
1
解决办法
2899
查看次数

在使用ASP.NET MVC时,如何有效地使用Visual Studio中的"添加视图"对话框?

有没有人认为VS中的添加视图对话框是无用的,还是仅仅是我?

为什么那里没有搜索/过滤?我甚至无法粘贴类型名称(没有命名空间)来加速视图创建.

此外,还有很多不相关的类,包括来自所有引用库的类.

我错过了什么或微软从未做过任何可用性测试?

与手动滚动组合框并列出所有类型相比,是否可以过滤掉对话框中的类型/组件和/或更好的导航?是否可以仅包含特定目录/程序集/命名空间中的类型?(例如ViewModels命名空间)


编辑:由于答案似乎没有可用的解决方法,我已在Connect提交了一个建议:https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?反馈ID = 507784

如果您发现这是一个重要问题,请投票赞成该建议.

asp.net-mvc usability user-interface visual-studio-2008

9
推荐指数
1
解决办法
632
查看次数

从文件内容计算的MD5哈希的前4个字节会发生冲突的概率是多少?

这是一个组合学问题,需要一些哈希算法的理论.

假设输入可以是30 kB到5 MB大小的任意随机字节序列(我想这会产生很多输入值的组合:))

对于不同的文件,从字节序列计算的MD5哈希的前4个字节(或前n个字节)的概率是多少?

如果不能专门为MD5哈希计算,那么生成均匀分布的m字节哈希值的任何哈希函数在给定输入范围的前n个字节上计算哈希与冲突的概率是多少?

hash md5 cryptography combinatorics

9
推荐指数
1
解决办法
6366
查看次数

ASP.NET MVC - 能够处理数组的自定义模型绑定器

我需要实现一种功能,允许用户以任何形式输入价格,即允许10美元,10美元,10美元......作为输入.

我想通过为Price类实现自定义模型绑定器来解决这个问题.

 class Price { decimal Value; int ID; } 
Run Code Online (Sandbox Code Playgroud)

表单包含一个数组或价格作为键

keys:
"Prices[0].Value"
"Prices[0].ID"
"Prices[1].Value"
"Prices[1].ID"
...
Run Code Online (Sandbox Code Playgroud)

ViewModel包含一个Price属性:

public List<Price> Prices { get; set; }
Run Code Online (Sandbox Code Playgroud)

只要用户在Value输入中输入十进制可转换字符串,默认模型绑定器就可以正常工作.我想允许输入"100美元".

我的ModelBinder for Price类型到目前为止:

public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
    Price res = new Price();
    var form = controllerContext.HttpContext.Request.Form;
    string valueInput = ["Prices[0].Value"]; //how to determine which index I am processing?
    res.Value = ParseInput(valueInput) 

    return res;
}
Run Code Online (Sandbox Code Playgroud)

如何实现正确处理数组的自定义模型Binder?

arrays asp.net-mvc imodelbinder modelbinders custom-model-binder

8
推荐指数
1
解决办法
7327
查看次数

WiX生成的MSI未压缩

我使用WiX3生成MSI安装包.我在<Package><Media>元素中都指定了压缩标志:

<Package InstallerVersion="200" Compressed="yes"/>
<Media Id="1" Cabinet="MySetup.cab" EmbedCab="yes" CompressionLevel="high" />
Run Code Online (Sandbox Code Playgroud)

但是得到的MSI根本没有压缩--WinZip将它从2M压缩到600K.

我错过了什么吗?

我正在使用VS2008 btw.

compression windows-installer wix visual-studio-2008

7
推荐指数
1
解决办法
2847
查看次数

HttpWebRequest会自动发送200 OK吗?

背景:我正在实现Paypal IPN处理程序.

这篇关于Paypal的精彩文章指出,在我阅读回复后,我需要将200 OK发回Paypal.

IPN请求的处理如下:

//Send the request to PayPal and get the response
StreamWriter streamOut = new StreamWriter(req.GetRequestStream(), 
                         System.Text.Encoding.ASCII);
streamOut.Write(strRequest);
streamOut.Close();

StreamReader streamIn = new StreamReader(req.GetResponse().GetResponseStream());
string strResponse = streamIn.ReadToEnd(); //returns VERIFIED
streamIn.Close();
Run Code Online (Sandbox Code Playgroud)

根据以下内容(来自文章),代码(我猜)应该发送200 OK回Paypal:

PayPal will respond with either VERIFIED or INVALID. After you receive this response, be sure to send 200 OK to prevent additional attempts from PayPal to send an IPN

我没有看到任何显式HTTP响应被发送为"200 OK".

使用过的HttpWebRequest会自动发送200 OK吗?

如果是,那会发生什么?

如果没有,如何使用HttpWebRequest发送200 OK响应?使用HttpWebRequest或套接字更容易吗?

c# paypal http

7
推荐指数
1
解决办法
2603
查看次数

是否可以安装到具有有限权限的程序文件中?

我有一个应用程序,将部署为MSI包(在WiX中编写).

我决定是否根据安装程序的要求指定elevatedlimited授予权限.

除默认安装位置(位于Program Files下)之外,该应用程序不包括任何需要提升权限的内容.

现在的问题是:

  • 如果我指定了提升权限,则安装期间UAC会提示用户输入管理员密码.这不是必需的,可以防止非管理员用户安装.

  • 如果我指定了有限的权限,则会向用户显示一个对话框,以选择Program Files默认的安装位置.如果他们不更改安装位置(95%的最终用户可能不会),则安装程序将失败并显示一条消息,他们应该联系管理员或以管理员身份运行应用程序.如果他们以管理员身份启动安装程序,那么他们可以毫无问题地安装到Program Files中 - 但大多数用户可能不知道如何以管理员身份启动安装程序.

我可以将默认安装位置设置为例如C:\ Company name\Program \,但这对我来说似乎是非标准的,并且大多数用户可能不喜欢这样(它们可能用于安装到Program Files中).

如何在有限的用户帐户下安装应用程序来解决这个问题?

installer privileges windows-installer uac

7
推荐指数
1
解决办法
3063
查看次数

WinForms:在多行文本框中自动完成

有没有人知道如何为多行WinForms TextBox/RichTextBox提供自动完成建议(比如帮助从列表中输入关键字)?

对于单行文本框,这非常简单.多线显然不是由Winforms直接实现的.

.net c# user-interface winforms

6
推荐指数
0
解决办法
3577
查看次数

用于ASP.NET的恶意爬虫程序员

我刚刚偶然发现了Bad Behavior - 一个PHP插件,它承诺通过阻止垃圾邮件和恶意爬虫来访问网站.

ASP.NET和ASP.NET MVC是否存在类似的情况?

我有兴趣完全阻止访问该网站,而不是在发布后检测垃圾邮件.

编辑:我特别感兴趣的是能够检测到网站访问模式的解决方案 - 这些会阻止屏幕整个网站的抓取,或者至少使其成为一个非常缓慢的进程,因为僵尸程序必须作为常规用户点击频率和点击中找到的模式(深度优先连续访问的100个链接清楚地表明某人正在抓取该网站).

恶意爬虫我的意思是主要是机器人正在构建其他网站的副本,但也是垃圾邮件,他们试图在网站上找到一些可提交的表单并提交他们的垃圾.

asp.net-mvc bots spam-prevention web-crawler detection

6
推荐指数
1
解决办法
938
查看次数

WinForms:为什么在显示文件夹浏览器对话框时会出现InvalidCastException?

我在显示FolderBrowserDialog时随机获取InvalidCastException,并且许多客户端都报告了此情况.

我无法在互联网上找到任何相关内容.有谁知道是什么导致这个/如何解决这个问题?

我的代码:

        using (FolderBrowserDialog fbd = new FolderBrowserDialog())
        {
            fbd.ShowNewFolderButton = false;
            if (fbd.ShowDialog() == DialogResult.OK)
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

Error: System.InvalidCastException: 
'Unable to cast object of type 'System.__ComObject' to type 'IMalloc'.'.

    Stack trace:    
at System.Windows.Forms.UnsafeNativeMethods.Shell32.SHGetMalloc(IMalloc[] ppMalloc)
at System.Windows.Forms.FolderBrowserDialog.GetSHMalloc()
at System.Windows.Forms.FolderBrowserDialog.RunDialog(IntPtr hWndOwner)
at System.Windows.Forms.CommonDialog.ShowDialog(IWin32Window owner)
at System.Windows.Forms.CommonDialog.ShowDialog()
Run Code Online (Sandbox Code Playgroud)

编辑:附加信息:我只能在VS2008调试器中运行时才能重现这一点.

当用完调试器时,它在我的64位Windows 7上很少发生(在6个月内发生过一次或两次),并在重启后消失.

客户端肯定没有在调试器中运行应用程序,所以它肯定可以从调试器中重现.

c# folderbrowserdialog .net-2.0 winforms

6
推荐指数
1
解决办法
1615
查看次数