繁体   English   中英

ASP.NET网页Web服务调用重定向到about:blank

[英]ASP.NET Web Pages Web Service Calls Redirecting to about:blank

我只是重新格式化了计算机,然后重新安装了所有内容。 我启用了IIS,即使在使用SQL数据库的情况下,我在Visual Studio 2015中工作的网站也能正常工作。 但是,我的Web服务都没有返回任何数据。 Web服务都是.asmx Web服务。 我尝试转到.asmx页面本身并调用Web方法,但是发生的所有事情都是将我重定向到about:blank。 这是在我成功到达asmx页面之后,但是在单击特定Web服务上的调用之后。

此外,我正在运行Fiddler,甚至根本没有创建一个http请求。 我尝试使用asmx页面,ajax控件工具包和jQuery AJAX调用来调用Web服务,所有这些甚至都不会产生http请求。 该网站正在IIS中运行。

知道什么会导致这种行为吗?

编辑

这是一些示例代码。

<script type="text/javascript">
    $(document).ready(function () {
        debugger;
        var vendorId = 5;
        var postData = JSON.stringify({ vendorId: vendorId });

        $.ajax({
            type: "POST",
            url: "../WebServices/BuildMaterialService.asmx/GetPurchaseOrderItemsByVendorId",
            data: postData,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            timeout: 5000,
            success: function (data, textStatus, jqSHR) {
                debugger;
                data = data.d;
                alert(data);
            },
            error: function (request, status, error) {
                debugger;
                if (status == "timeout")
                    alert("A timeout occurred. Please try again.");
                else
                    alert("An unknown error occurred. Please try again.");
            }
        });
    });
</script>

是的,jQuery已经加载并且可以使用了。 命中第一个调试器,正确设置了vendorId和postData。 AJAX调用永远不会在Fiddler中生成HTTP请求。 实际上,它转到了AJAX调用,当我按下F10时,下一步是其他一些后台代码。 我将让javascript重新运行,并在error函数中的debugger命令处再次停止。

再次,该代码已经完美运行了3年,仅在重新格式化后才停止工作。 该代码是正确的,因此错误可能是来自IIS。

我试图缩小原因,但实际上那行var vendorId = 5; 在我的真实代码中替换为var vendorId = Number($('#ddlVendors :selected').val()); -这将失败,并且会立即进入AJAX调用中的错误功能,而无需获取AJAX命令。 如果我进入控制台并编写了相同的代码行,但是更改了变量名,则可以正常工作var abc = Number($('#ddlVendors :selected').val()); -此处的abc设置正确。 当我进入代码并将vendorId更改为abc时,与变量名称vendorId无关,并且会发生相同的错误。 即使在控制台中,即使在调用变量声明之前(之前在调试器上暂停了),我也无法声明我在其中放置的任何名称的变量并赋值。 var vendorId = 5; 失败,但var blabla = 5;

抱歉,这很长且令人困惑,但这使我感到困惑,难以描述。

编辑2

我注意到在IE中它实际上是成功的。 我取出了dataType: 'json',它更改了Chrome中的行为,因此它不会转到错误函数,而是转到成功函数; 但是,实际上并没有从服务器返回数据。 Fiddler确实显示了IE的http帖子,但Chrome没有显示该帖子。

此外,仍然在IE中,通过ajax工具包进行的Web服务请求无法正常工作。 我注意到有人说要从使用<asp:ScriptManager切换到<ajaxToolkit:ToolkitScriptManager 我不知道为什么在重新格式化后突然需要这样做,但是我尝试了。 结果是我得到一个错误, Could not load file or assembly 'AjaxMin, Version=4.97.4951.28478, Culture=neutral, PublicKeyToken=21ef50ce11b5d80f' or one of its dependencies. The system cannot find the file specified. Could not load file or assembly 'AjaxMin, Version=4.97.4951.28478, Culture=neutral, PublicKeyToken=21ef50ce11b5d80f' or one of its dependencies. The system cannot find the file specified. 网上人们的回应似乎是从NuGet安装AjaxMin。 我这样做了,但是我仍然没有得到AjaxMin.dll文件,它没有安装正确的版本。 我尝试使用命令Install-Package AjaxMin -Version 4.97.4951.28478但是它给出了一个错误,即找不到该软件包。 我不确定为什么甚至要请求该文件,因为我在项目目录中的任何地方都看不到对AjaxMin的引用。

我什至从https://github.com/DevExpress/AjaxControlToolkit/下载了AjaxControlToolkit并将其构建在我的机器上。 我运行了示例站点,然后进行级联下拉示例,它在Chrome中不起作用,但在IE中起作用。 这是使用IIS Express。

归结为2个问题。

  1. 当我第一次打开解决方案时,Visual Studio重新下载了许多软件包,并替换了bin文件夹中的dll。 唯一的问题是AjaxControlToolkit.dll版本错误。 我复制了我从登台服务器上获得的旧版本,它解决了IE中的Ajax控件工具包级联下拉菜单的问题。

  2. 对于级联的下拉菜单或简单的jQuery AJAX调用,Chrome仍然根本不起作用。 最终这是由于我的广告拦截器扩展程序(站)阻止了脚本运行。 我将本地主机列入白名单,现在Chrome也可以正常使用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM