IIS/ASP.NET 接收从外部应用程序到 SOAP 代理服务器的调用

IIS/ASP.NET receiving calls from external application to SOAP proxy server

这很奇怪,抱歉 :( 我有一个远程服务器(第 3 方,不受我控制)调用定义的端点 (http://myservice.com/service.asmx), but internally before calling, it appends '.wsdl' to the URL string (so I see http://myservice.com/service.asmx.wsdl) 等待此请求的原始服务器期待此,但原来的服务器不再使用,我希望用 'stub'.

替换它

基本上,我正在尝试放置一个 ASP.NET 应用程序来接收请求(所有当前 运行 在本地使用 IIS)。我已经使用 wsdl.exe 创建了我的存根代码,它被称为 service.asmx。针对此 运行 服务使用 POSTMAN,一切都很好——我可以调试、查看响应等,但是如果我尝试将我的项目重命名为 service.asmx.wsdl 以适应发出请求的真实服务器,我看到 405 - HTTP 动词错误。我一直无法弄清楚如何使它工作,并认为它是 IIS 处理程序或类似的东西。我看过 IIS 处理程序,但我似乎找不到一个可行的处理程序(即将 .asmx 配置文件复制到新创建的 .wsdl 配置文件中)

所以我的问题是“我能否使 .wsdl 的端点表现得像 .asmx 一样,还是我处理这一切都是错误的?

经过多次纠结,我不得​​不将 Global.asax 文件添加到我的项目中并在其中实现以下方法...

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        var path = Request.Path;
        if (path.EndsWith(".asmx.wsdl"))
            Context.RewritePath(path.Replace (".asmx.wsdl", ".asmx"));

这允许 IIS 中的默认 asmx 处理程序保持原样并通过简单地以编程方式重写 URL 来处理来自 URL 的请求。