C# 将映像传递到服务器的最佳方法?

C# 将映像传递到服务器的最佳方法?,c#,asp.net,silverlight,silverlight-3.0,C#,Asp.net,Silverlight,Silverlight 3.0,我有一个SL3应用程序,需要能够将图像传递到服务器,然后服务器将生成一个包含图像的PDF文件,并将其显示给用户 我已经准备好了以下内容: (1) 将图像转换为字节数组的代码 (2) 生成带有图像的PDF文件的代码 我遇到的主要问题如下: 为了绕过弹出窗口阻止程序(这是我的应用程序的一项要求),我使用以下代码: var button = new NavigationButton(); button.NavigateUri = new Uri("http://localhost:3616/Prin

我有一个SL3应用程序,需要能够将图像传递到服务器,然后服务器将生成一个包含图像的PDF文件,并将其显示给用户

我已经准备好了以下内容:

(1) 将图像转换为字节数组的代码 (2) 生成带有图像的PDF文件的代码

我遇到的主要问题如下:

为了绕过弹出窗口阻止程序(这是我的应用程序的一项要求),我使用以下代码:

var button = new NavigationButton();

button.NavigateUri = new Uri("http://localhost:3616/PrintReport.aspx?ReportIndex=11&ActionType=Get&ReportIdentifier=" + reportIdentifier.ToString() + "");

button.TargetName = "_blank";

button.PerformClick();
最初,我将图像传递给WCF web服务(作为字节数组),然后“导航”到将显示报告的ASP.NET页面。但是,如果我这样做,那么我就不能使用我的自定义HyperlinkButton类,并且,某些浏览器,包括Safari,将阻止打开一个新窗口。因此,唯一的选择似乎是使用HyperlinkButton类

我需要能够做的是以某种方式将图像作为字节数组或其他数据类型传递给服务器,这样它就可以临时存储图像,即使它位于服务器变量中,然后在导航到PrintReport.aspx页面时立即检索它

如果我将图像上载到ASP.NET表单,然后使用HyperlinkButton类导航到PrintReport页面,则它不起作用,因为应用程序在系统完成图像上载之前导航到PrintReport页面。我无法将其传递给web服务,因为这需要我在将图像传递给的web方法的回调代码中导航到PrintReport.aspx页面,根据安全规则,HyperlinkButton将不允许这样做

任何帮助或想法都将不胜感激

谢谢


克里斯

听起来你的问题与图像上传无关,而与使用有关 只需单击一次即可上载并导航到显示报告的页面,如果是这种情况,那么在报告页面本身处理图像上载可能是一种方法

显示如何上载到标准aspx页面

至于让webservice方法发挥作用,我想说的是,这里缺少的拼图部分是WCF ASP兼容模式

这使您能够访问wcf服务中的httpcontext。当然,问题是您正在将您的服务耦合到ASP

在这里查看有关ASP兼容模式的更多详细信息

然后,您的流程将变为:

上载到Webservice->添加到缓存

导航到页面->从缓存检索

希望这些建议中的一个能有所帮助


如果没有,回到我身边

你的理解是正确的。如果我上传到web服务,那么逻辑方法是在图像数据上传完成后导航到显示报告的页面。您不能从回调方法等使用HyperlinkButton导航方法。。。与Silverlight的安全措施有关。所以,我仍然在努力弄清楚,只需单击一下,如何上传图像数据,使用HyperlinkButton,打开一个新窗口并浏览到另一个页面。K,我将研究AutomationPeers命名空间。。。这允许您模拟用户操作(同样,安全性可能意味着没有用于超链接的automationpeer按钮)。。。看起来您必须在服务器端执行一些奇特的操作,在图像完全上传之前不要让reportpage呈现。。。我现在正在工作,没有silverlight开发环境,但当我回家后,我会尝试一下,让你知道。