问题标签 [asmx]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3913 浏览

web-services - Asp.net 路由、WebServices 和 IIS7 经典

我有一个在 IIS7 Classic 上运行的 Web 表单应用程序。它使用 .asmx 样式的 Web 服务来处理网站的客户端重部分。

我们的任务是在“友好的 url”中分层,并决定使用新的 Asp.net 路由。我们在 IIS 中有一个规则将所有请求映射到 aspnet_isapi.dll,这在我们的 web.config (system.webServer/hanlers) 中产生了这个声明:

但是现在路由会破坏我们的 .asmx Web 服务请求(形式为http://example.com/blah.asmx/SomeMethod)。对 Web 服务的任何请求都会给我们带来无穷乐趣:

将此行放入我们的路线设置中:

仍然给我们留下“无法执行 URL”异常。我知道这条路线是匹配的,因为:

使用该路由而不是“无法执行 URL”,我会看到“方法未实现”,就像我期望的那样。

我怀疑我们的 * -> aspnet_isapi.dll 正在造成严重破坏,因为我在搜索谷歌时没有发现其他人这样做。

提前感谢您的任何见解。

0 投票
5 回答
565 浏览

web-services - 替代使用为 Web 方法实现 IDictionary 的内置对象

我有一个使用在 ASP.NET 中创建的 Web 服务的 Web 应用程序。在这个网络服务中,我想传递一个键值类型的集合对象(即像 Hashtable 或 Dictionay 之类的东西)。

但是我们不能使用从 IDictionary 实现的对象。

我不想在我的 Web 服务中创建序列化类。

谁能建议我最好的方法?

0 投票
2 回答
6327 浏览

asp.net - 如何处理 Web 服务中字符串中的特殊字符?

为了展示 .NET 中的这个基本问题以及这个问题的原因,我编写了一个简单的测试 Web 服务,其中包含一个方法 (EditString),以及一个调用它的消费者控制台应用程序。

它们都是通过文件/新建项目等创建的标准 Web 服务/控制台应用程序,所以我不会列出整个代码 - 只是有问题的方法:

网络方法:

[您可以看到,如果 useSpecial 为 false,它只会返回字符串 s。如果 useSpecial 为真,则返回 s + char 19。]

控制台应用程序:

[第二个响应失败,因为该方法返回 hello + 一个特殊字符(为了参数的缘故,ascii 代码为 19)。]

错误是:

  • XML 文档中存在错误 (1, 287)

  • 内部异常:“'',十六进制值 0x13,是无效字符。第 1 行,位置 287。”

有几点值得一提:

  • 当直接浏览到 ASMX 文件(例如http://localhost:2065/service1.asmx)并通过它运行该方法(使用与控制台应用程序中相同的参数)时,Web 方法本身可以正常工作 - 即显示带有字符串 hello + char 19 的 XML。

  • 以其他方式检查序列化的 XML 表明特殊字符被正确编码(服务器端似乎没问题,这很好)

  • 所以看起来客户端有问题 - 即.NET生成的代理类代码不处理特殊字符

  • 这是一个更大项目的一部分,其中对象被传入和传出 Web 方法 - 包含字符串属性 - 这些是正常工作所需要的。即我们正在反序列化类。

有关解决方法以及如何实施的任何建议?

还是我完全错过了一些非常明显的东西!!?

PS。我没有太多运气让它使用 CDATA 标记(.NET 是否支持这些开箱即用?)。

0 投票
8 回答
73182 浏览

c# - 从 jQuery 调用 ASMX

我试图从 jQuery 调用 ASMX 方法但没有成功。以下是我的代码,我不明白我缺少什么。

文件Something.js,

文件SomethingElse.cs,

0 投票
5 回答
92348 浏览

asp.net - 通过 jQuery 调用 ASP.NET 服务器端方法

我正在尝试通过 jQuery 从客户端调用服务器端方法。我的代码如下:

服务器端:

客户端:

我在服务器端 SendMessage 方法上添加了一个断点,但它从来没有命中它,但是当我运行代码时,会调用 jQuery 成功方法。是什么原因造成的?

0 投票
1 回答
2279 浏览

web-services - 使用 Windows 身份验证的 ASMX/WCF Web 服务出现罕见且零星的 401 未经授权的错误

我们有一个混合的 WCF 和 ASMX Web 服务,目前正在一个体面的项目中使用。现在,大多数时候一切都运行得很好,但是在极少数情况下,似乎是随机的,Web 服务开始阻止调用,这会将 401 Unauthorized 错误返回到相关页面。似乎是 ASMX 服务调用导致了这种情况,但鉴于这种情况并不经常发生并且不可重现,我不能肯定地说。

该错误在 IIS 重置后消失了,至少有一次它最终自行消失了。我们使用 Windows 身份验证作为禁用匿名访问的凭据类型。

有人对为什么会发生这种情况有任何想法吗?

0 投票
7 回答
17601 浏览

c# - ASMX webservice 不返回 JSON,只能使用 application/x-www-form-urlencoded contentType POST

如果 contentType = "application/x-www-form-urlencoded; charset=utf-8",我可以使用 jQuery 调用我的网络服务

但是,这将返回 xml:<string>[myjson]</string>

如果我尝试使用“application/json; charset=utf-8” POST 到服务,我会收到一个 500 错误,其中包含空的 StackTrace 和 ExceptionType。我的网络服务功能从未被击中,所以我不太确定如何调试这种情况。

我的方法和类用适当的属性修饰,并设置为使用 JSON 作为它们的响应类型(我的 wsdl 和 disco 文件也是如此)。我在 web.config 中安装了 Ajax 扩展和所需的条目。

这是在 SharePoint 场上,但我不确定这会产生多大的不同。我在所有 WFE 上部署了 web.config 更改,并安装了 ajax 扩展。该服务再次起作用,它只接受默认内容类型以外的任何内容。

不知道我在这里错过了什么,伙计们......

我的ajax调用:

我的网络服务类:

0 投票
1 回答
1745 浏览

asp.net - 在 ASP.Net 中,我可以使用 Javascript 和 PageMethods 调用用户控件 WebMethod 吗?

它说 PageMethods 是未定义的。

0 投票
2 回答
1890 浏览

web-services - 将 Byte 数组从 Blackberry 传递到 .NET Webservice

我正在尝试将一个字节数组从我的 Blackberry 应用程序发送到 .NET webservice (asmx)。

我正在使用 Sun Java Wireless Toolkit (WTK) 2.5.2 来生成要在 Blackberry 解决方案中使用的 Web 服务存根。WTK 项目设置使用 JSR 172 规范生成存根。

我使用 .NET 2005 创建了 Web 服务,方法如下:

我从这个 Web 服务的 WSDL 生成存根,但我收到:“错误:找到未知的简单类型:字节 []”。我使用过这种生成存根的方法,之前没有收到任何错误,因为所有输入变量都是简单类型,但我用它来返回自定义对象的数组。当我检查 WSDL 文件时,类型是 base64Binary。

除了字节数组之外,还有什么我可以用来传递数据的吗?还是我缺少某种设置以允许 Web 服务将其作为字节数组?

0 投票
3 回答
2983 浏览

web-services - .NET Web 服务的 WSDL 中的 URL 不正确的问题

我们在客户端的服务器上安装了一个 ASP.NET 网站。该站点有一个 Web 服务,其中包含几个由 Flash 对象调用以显示新闻提要的 Web 方法。如果您浏览到他们的网站(例如:www.domain.com),一切正常,除了闪存。

问题是当我们浏览到 .asmx 时,标头显示主机是其网络内部的子域 (internal.domain.com)。显然,当从网络外部浏览时,这不会解析为任何公共 IP。这会导致 Flash 失败,因为 Flash 对象嵌入在页面上,因此正在客户端运行。

我检查了有问题的服务器上的计算机名称,它甚至与“internal.domain.com”不匹配——这是完全不同的东西。它从哪里得到这些信息。它不是来自 IIS,因为我们没有设置主机头,并且站点的 IP 设置为(全部未分配)。

我们需要强制 Web 服务针对特定主机运行,或者我们需要更改服务器上的某些内容,以便它解析为有效的面向公众的主机名。非常感谢任何和所有帮助!!!!