Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在WCF服务中创建动态映像并将其发送回WCF中的调用者?_C#_Wcf_Memorystream_Dynamic Image Generation - Fatal编程技术网

C# 如何在WCF服务中创建动态映像并将其发送回WCF中的调用者?

C# 如何在WCF服务中创建动态映像并将其发送回WCF中的调用者?,c#,wcf,memorystream,dynamic-image-generation,C#,Wcf,Memorystream,Dynamic Image Generation,我有一个ASP.NET页面,我在其中呈现一些HTML标记,其中包括由另一个ASP.NET页面生成的条形码图像 <div id='divDynamic'> <h1>Some content</h1> <img src='barcode.aspx?mode=something' /> </div> 我需要在许多类似的网站上使用相同的功能。因此,现在我尝试将其转换为WCF服务,其中将生成div“divDynamic”的标记,

我有一个ASP.NET页面,我在其中呈现一些HTML标记,其中包括由另一个ASP.NET页面生成的条形码图像

 <div id='divDynamic'>
   <h1>Some content</h1>
   <img src='barcode.aspx?mode=something' />
 </div>
我需要在许多类似的网站上使用相同的功能。因此,现在我尝试将其转换为WCF服务,其中将生成div“divDynamic”的标记,并将其发送回客户端(asp.net网站)。我的服务有一个返回类型string的方法,它将返回HTMLMarkup,如下所示

 public string GetUSPSLabelMarkup()
 {
        StringBuilder strHtml = new StringBuilder();
        strHtml.Append("<h1>Some content</h1>");
        // How do I have the barcode image here?

        return strHtml.ToString();

    }
公共字符串GetUSPSLabelMarkup()
{
StringBuilder strHtml=新的StringBuilder();
strHtml.Append(“某些内容”);
//这里的条形码图像如何显示?
返回strHtml.ToString();
}

我想知道我应该如何在我的服务中使用上述方法中的图像生成部分?我认为Response.BinaryWrite不应该在这里工作。

如果您发送回HTML,这意味着消费者也可以理解IMG标记,那么为什么不发送此:

 strHtml.Append("<h1>Some content</h1>");
 strHtml.Append("<img src='barcode.aspx?mode=something' />");

另外,确保contentType和ImageFormat之间的一致性(一个声明JPEG,另一个声明BMP)。

我认为这是一个概念上的错误

即使在WCF中,您仍将有两个单独的呼叫:

  • 客户端加载带有
    引用的HTML标记
  • 客户端从服务器加载二进制图像数据

因此,在WCF服务上有两种方法:
string GetUSPSLabelMarkup()
byte()GetUSPSLabelImageData()

我不想在消费者端使用barcode.aspx。条形码图像的生成应该在WCF服务中。如果发送HTML,则不在客户端(asp.net应用程序),您只能构建一个IMG SRC标记来响应HTTP请求(您已经拥有的)。如果你想要一个WCF服务,你就不会为HTML服务。你需要做出选择。HTML还是WCF?如果它是WCF,那么请参见以下内容,以便也可以从NuGet安装线程:GenCode128:
 strHtml.Append("<h1>Some content</h1>");
 strHtml.Append("<img src='barcode.aspx?mode=something' />");
protected void Page_Load(object sender, EventArgs e)
 {
    Response.ContentType = "image/JPEG";
    System.Drawing.Image objBitmap = GenCode128.Code128Rendering.MakeBarcodeImage(Request.QueryString["mode"] + "", 2,false );
    objBitmap.Save(Response.OutputStream, ImageFormat.Bmp); 
}