有什么方法可以通过编程方式更改webmethod参数?

时间:2020-01-06 06:00:17

标签: c# asp.net sql-injection sqlparameter

需要在执行asp.net Web服务Web方法输入之前对其进行操作。

例如:

我有一个名为web1(string inp1)的网络方法。现在,我使用输入的inp1值作为“ Jagan drop table”来调用此Web方法,但是我需要将inp1的值更改为“ Jagan”,然后将其传递给相应的Web方法。 / p>

我不想在每个Web方法中都替换它,而是在相同的地方(例如公共函数或类)替换。

2 个答案:

答案 0 :(得分:0)

您要交易with Sql injection吗?在构建查询时只需使用sql参数来避免它。

我认为这不是在不通知的情况下从传入参数中删除某些内容的好方法。最好检查sql注入并发现错误。

如果您正在寻找检查所有传入参数的方法,则可以使用ASP.NET中间件。 像

public class SampleMiddleware
{
    private readonly RequestDelegate _next;

    public SampleMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task InvokeAsync(HttpContext httpContext)
    {
        //you can have access for 
        httpContext.Request.Query
        httpContext.Request.Headers
        httpContext.Request.Body
    }
}

您可以使用SampleMiddleware.InvokeAsync

使此Microsoft.AspNetCore.Builder.UseMiddlewareExtensions对控制器中的每个方法都执行
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.UseMiddleware<SampleMiddleware>();
}
}

答案 1 :(得分:0)

一种达到要求的方法是使用Soap Extensions-

我正在获取以下网站的代码,并尝试相应地进行解释-

https://expertsys.hu/2017/10/11/renaming-asmx-webmethod-parameter-preserving-compatibility/

  1. 创建Soap Extension类。
  2. 整个过程发生在processmessage调用中。如果看到名为 beforeSerialize 的“ updateMessage ”方法,则该方法将解析并提取带有输入的XML节点“ inp1”,并根据需要用split运算符替换该值。如果需要,您可以进一步更改!
  3. ParameterValueChangedSoapExtensionAttribute ”类,它将帮助指定Soap Extension类。
  4. 所有其他方法都是达到要求的助手类。
response.urljoin()

请通过以下链接获取有关SOAP扩展的更多信息-

Soap Extensions

SoapExtensionAttribute