【问题标题】:Asmx Webservice Method to receive an soap xml input stringAsmx Webservice方法接收一个soap xml输入字符串
【发布时间】:2020-07-15 13:53:16
【问题描述】:

美好的一天。

我希望有人可以帮助我。我正在创建一个 Web 服务(这是我第一次创建一个 Web 服务)。过去,我通过创建soap xml消息并来回发送和接收消息,从客户端使用Web服务/API。现在我需要创建自己的网络服务,并且需要一些帮助才能正确创建它。

我最初创建了一个简单的网络方法,如下所示。

[WebMethod(Description = "Soap Request")]
public string Request(string xmlDocument)
{
   //do work
}

但是当我尝试使用此方法时,我收到以下错误:

System.Web.HttpRequestValidationException:一个潜在的危险 从客户端检测到 Request.Form 值

然后我尝试(在谷歌搜索后)将方法更改如下:

[WebMethod(Description = "Soap Request")]
public string Request(XmlDocument xmlDocument)
{
  //do work
}

但这似乎也不起作用,当我尝试向此方法发送 xml soap 消息时,它是空的。然后我所做的是使用与我的 xml Soap 消息中的元素匹配的参数创建方法。然后该方法拾取每个元素并正确填充参数,如下所示。

public void Request(string parm1, string parm2)
{
  //do work
}

使用以下xml

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:Request>
         <tem:Parm1>111</tem:Parm1>
         <tem:Parm2>222</tem:Parm2>
      </tem:Request>
   </soapenv:Body>
</soapenv:Envelope>

我想知道,这是处理传入消息的正确方法还是我应该做些什么来接受传入的 xml 消息?我认为我可以像最初所做的那样创建方法,它会接受传递给它的 xml 字符串,并且我可以像从过去使用的 Web 服务接收回 xml 消息时那样处理该消息。

如果我重复了一个问题,请原谅我,我找不到任何可以给我明确答案的东西。

我已开始在 Visual Studio 2019 中创建 Web 服务。

任何帮助或建议将不胜感激。

【问题讨论】:

  • 见下文。是否应该签署请求?请求是 http(非安全)还是 https(安全):stackoverflow.com/questions/81991/…
  • 嗨,jdweng。感谢您的回复。我确实看到了那个帖子。通过在 SOAP UI 中测试我的方法,我似乎确实克服了这一点。我有一个参数为“XmlDocument”,但是当我从soap ui 发布xml 时,我似乎只得到了第一个元素。关于我上面的问题,是否有一个具有各种参数的方法并将xml肥皂消息传递给它?
  • 您可能遇到了命名空间问题。定义了两个命名空间“soapenv”和“tem”。因此,请确保您的解析包含命名空间。

标签: c# xml web-services soap


【解决方案1】:

我遇到了完全相同的问题。所以在我的项目中,我只是将它添加到我的web.config/system.web/httpRuntime

requestValidationMode="2.0"

而且效果很好!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    相关资源
    最近更新 更多