【发布时间】: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