c#Web服务处理重复/多个项目

Posted

技术标签:

【中文标题】c#Web服务处理重复/多个项目【英文标题】:c# Web service to handle repeating/multiple items 【发布时间】:2018-11-23 03:55:43 【问题描述】:

我是使用 Webservice 的新手。我对外部公司实施了肥皂发布操作。工作很棒。我现在想开始创建自己的,供人们与我们互动。我已经创建了基本的添加服务作为所有教程等。

现在我想创建一个您可以从中下订单的服务。目前我只是将订单写入以 PO nr 作为文件名的文本文件。仅向其提交 1 个项目即可进行测试。但我希望他们在通话中通过多个项目传递它。这是我现在得到的。

c#

   public struct OrderSystem
    

        public string ResultMsg;
    


[WebMethod(MessageName = "Submit Order", Description = "Submit Order")]
public OrderSystem Order(string Custnr,string POnr, string[] Item , int[] qty)
 
    using (System.IO.StreamWriter file =
        new System.IO.StreamWriter(@"C:\Users\Public\TestFolder\"+POnr+".txt"))
    
                file.WriteLine(Custnr);
                file.WriteLine(POnr);

                for (int i =0; i< Item.Length; i++)
                
                    file.WriteLine("LineItem" + i +Item[i] + " | "+qty[i]);
                  
    

    OrderSystem result;

        result.ResultMsg = "Complete";
        return (result);


当前的 XML 调用方式。对他们设计给我的电话不友好

POST /Orders.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/Submit Order"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Submit_x0020_Order xmlns="http://tempuri.org/">
      <Custnr>string</Custnr>
      <POnr>string</POnr>
      <Item>
        <string>string</string>
        <string>string</string>
      </Item>
      <qty>
        <int>int</int>
        <int>int</int>
      </qty>
    </Submit_x0020_Order>
  </soap:Body>
</soap:Envelope>

我想让xml调用文件怎么看。

POST /Orders.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/Submit Order"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <Submit_x0020_Order xmlns="http://tempuri.org/">
      <Custnr>000223</Custnr>
      <POnr>988590</POnr>
      <ItemList>
        <Item>
            <ItemNr>1</Item>
            <Item>ABC123</Item>
            <Qty>2</Qty>
        </Item>
                <Item>
            <ItemNr>2</Item>
            <Item>ASC123</Item>
            <Qty>45</Qty>
        </Item>
                <Item>
            <ItemNr>3</Item>
            <Item>XYZKKF</Item>
            <Qty>4</Qty>
        </Item>
                <Item>
            <ItemNr>4</Item>
            <Item>FGH789</Item>
            <Qty>6</Qty>
        </Item>

      </ItemList>

    </Submit_x0020_Order>
  </soap:Body>
</soap:Envelope>

我怎样才能改变我的 C# 服务来处理那个 XML 文件。

提前谢谢你 问候

【问题讨论】:

【参考方案1】:

首先,不要在 2018 年使用 ASMX 创建新服务。一直是 deprecated for a couple of years already。使用 WCF 或 Web API。

该解决方案适用于所有技术。只需创建一个类:

public class Item

    public string ItemNr  get; set; 
    public int Quantity  get; set; 

并让您的服务接受该类的列表。

【讨论】:

如果您正在尝试新事物,或许 EF codefirst 会帮助您将数据存储在数据库中而不是文件中。 感谢您对此的回答。我将研究 WCF。我会将数据存储到数据库中。文本文件现在仅用于测试。您可以告诉我如何在示例中使用该类吗?

以上是关于c#Web服务处理重复/多个项目的主要内容,如果未能解决你的问题,请参考以下文章

我向 Web 服务发送了 100 多个请求 [重复]

ASP.NET MVC web.config(多个)问题

Web服务器之Tomcat的相关说明(Web访问中的角色与协议问题和JavaWeb项目的程序结构问题)

AFHTTPSessionManager 使用 AFNetworking 调用多个 Web 服务或批处理

Web 服务器如何在单个端口 (80) 上一次处理多个用户的传入请求?

是否可以在多个服务器上重复使用访问令牌 - IdentityServer4