WebService的url中带有空格如何处理

目前WebService中在调用DefaultWsdlHelpGenerator.apsx时url地址会变成/test.asmx?op=add,那在固定调用地址/test.asmx?op= add(等号后添加了空格)时会显示“在服务 test中找不到方法“ add””。该如何对空格进行处理时在调用固定地址时重定向到无空格的地址

为什么要加上空格呢?如果真的有空格作为参数,可以加上%20代替

为了解决这个问题,你可以尝试将URL中的空格替换成%20,这是一种在URL中表示空格的编码方式。例如,将/test.asmx?op= add替换为/test.asmx?op=%20add。

如果你需要在固定调用地址时自动将空格替换成%20,你可以使用Web服务器或Web框架的重定向功能来实现。例如,在ASP.NET中,你可以在Global.asax文件的Application_BeginRequest事件中添加以下代码:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    string rawUrl = HttpContext.Current.Request.RawUrl;
    if (rawUrl.Contains("/test.asmx?op= "))
    {
        string newUrl = rawUrl.Replace("/test.asmx?op= ", "/test.asmx?op=%20add");
        HttpContext.Current.Response.Redirect(newUrl);
    }
}





这将拦截所有请求,并检查URL是否包含/test.asmx?op= 。如果包含,它将使用String.Replace方法将其替换为/test.asmx?op=%20add,然后将请求重定向到新的URL。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/197614
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:WebService调用接口传参失败问题解决
  • 除此之外, 这篇博客: C# 项目开发WebService的引用中的 第五步、在URL中填写WebService服务地址笔者的是局域网地址:http://192.168.1.30/WebServiceData.asmx 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    在这里插入图片描述
    局域网http://192.168.1.30/WebServiceData.asmx打开如下图
    在这里插入图片描述
    上图Web引用名为WebReference笔者新建的Web文件夹名为WebReferences如上图所示


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^