问题标签 [scriptservice]

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 投票
1 回答
3725 浏览

c# - Webservice 复杂类型和类继承

使用以下 Web 服务定义,将 aClientArgs 用作复杂类型:

然后将 aClientArgs 定义为子类:

为 save_client 参数返回以下 WSDL 片段:

当我期待以下内容时:

因此,出于 Web 服务的目的,.NET WebService 似乎没有将继承的属性视为参数/变量。如何让 .NET 也使用基类的属性?

0 投票
0 回答
318 浏览

asp.net - ASP.NET ScriptService JavaScript 别名

这更像是一个表面问题,而不是一个实际的“问题”。我有一个解决方案,我将很多 PageMethods 转换为 WebService 调用。一些 PageMethods 创建了几百 KB 的页面开销,所以我想我会将它们提取到它们自己的 WebServices 中,从而减少页面开销并启用 JavaScript 代理的客户端缓存。

但是,该项目的结构有很多命名空间,例如。CompanyName.Website.Services.MyService.ServiceMethod

这从字面上翻译成相同命名空间中的 JavaScript。在大多数情况下,我觉得这很好,但是当我在一个服务中有大约 20 个方法时,它变得非常乏味,总是编写相同的命名空间。

我做了一些研究,发现我可以像这样写自己的别名

var MyAlias = function() { CompanyName.Website.Service.MyService; }

但是,这样做会使 Visual Studio 2010 无法提供智能感知。它按预期工作,但我无法使用我非常喜欢的甜蜜、甜蜜的智能感知:)

所以,我的问题是:有什么方法可以为生成的代理提供别名(就像我可以使用自定义类型一样)?

我试过使用属性[System.Web.Script.Services.GenerateScriptType(typeof(MyService), ScriptTypeId = "MyServiceAlias")] 它确实创建了某种别名,但我无法真正弄清楚它会产生什么影响。此外,我认为这不应该用于像 WebService 类这样的静态类型。

我的要求是,我可以缩短生成的代理命名空间,同时将原始命名空间保留在 WebServices 中,但仍然可以使用智能感知。

提前致谢...

0 投票
2 回答
5803 浏览

c# - 派生类型的 ASP.NET ScriptService 反序列化问题

我有一个ScriptServiceWeb 方法(.NET 3.5),它采用抽象基类型的单个参数:

和:

通常,当方法被调用时,item将是一个Group包含Instance和/或Group对象。我从 jQuery 调用这个服务;我没有使用 Microsoft 客户端框架。调用其他方法工作正常。

问题: 当我进行调用时,甚至在调用我的方法之前就引发了异常。例如,如果我的电话是:

...我得到一个InvalidOperationException

如果我删除__typeJSON 对象的成员或将其更改为Namespace.Item(并从中删除abstract修饰符Item),异常就会消失,但生成的反序列化对象显然有点没用。

我错过了什么?

0 投票
2 回答
3122 浏览

asp.net - 允许对 ASP.NET ScriptService 的跨域请求

我已经使用 [ScriptService] 属性启动并运行了一个 ASP.NET Web 服务。从我从这篇文章中读到的内容:

http://weblogs.asp.net/scottgu/archive/2007/04/04/json-hijacking-and-how-asp-net-ajax-1-0-mitigates-these-attacks.aspx

默认情况下,ASP.NET 不允许 JSONP 请求(通过拒绝跨域请求注入 DOM。它通过采取 2 种措施来做到这一点:

1) 仅接受 POST 请求(通过始终执行 GET 的脚本注入) 2) 拒绝发送 HTTP 标头 Content-type 而非“Content-type: application/json”(浏览器不会发送)的连接。

我熟悉跨域问题,我知道 JSONP 是什么,我完全理解为什么 ASP.NET 默认以这种方式受到限制。

但是现在,我的网络服务是公开的,应该对所有人开放。因此,我明确需要通过 Javascript 向我的 Web 服务启用跨域请求,以便外部网站可以通过我的 Web 服务从 jquery 等中检索数据。

我已经介绍了步骤 (1) 以通过以下方式修改 ScriptMethod 属性来允许通过 GET 请求:[ScriptMethod(UseHttpGet=true)]。我已经检查了 jQuery,GET 请求现在可以工作(在同一域上)。但是如何到达固定点(2)?

我知道一些浏览器支持的 Allow-Origin-* 标头,但它还不是标准的,我不想强​​迫我的用户/客户修改他们的 HTTP 标头以使用我的 web 服务。

总结一下:我需要良好的实践来通过 JSON 为公共 Web 服务启用 ScriptingService 的跨域请求。我的意思是必须有一种方法可以公开 Web 服务,这就是大多数 Web 服务的意义所在?

0 投票
2 回答
1159 浏览

asp.net - 如何让 ASP.NET WebForms Routing 正确路由 .asmx JSON 调用?

我正在尝试在旧版 ASP.NET WebForms 应用程序中实现多租户。我希望 URL 指示正确的客户端,如下所示:

但是,我无法让它正确地路由 .asmx。此路由规则可以很好地提取所有传入的 url:

但我在处理 .asmx 调用时遇到问题。下面是我的 IRouteHandler。我得到的错误是:

它应该是 JSON,但由于某种原因它不起作用。我正在设置内容类型 - 如果我在没有路由的情况下发送相同的请求,它工作正常。

相关链接:

0 投票
1 回答
3981 浏览

web-services - 未找到 WebService/ScriptService;System.Web.Extensions 无法识别

我在我的 vb.net 4.0 Web 应用程序(或网站......不确定它是什么 - 有关系吗?)中创建了一个脚本服务,因为我想从客户端调用它。我收到客户端错误,说我的命名空间无法识别(下面代码中的 HomepageService)。我尝试使用在项目中配置为“根命名空间”的名称对其进行限定,但 js 表示它也不识别该命名空间。

该应用程序很旧 - 我们最近将其从 dotnet 2.1 转换为 4.0。

我找到了以下相关主题,因为当我尝试在我的 HomepageServices.asmx.vb 中导入 System.Web.Extensions 时,Visual Studio 说即使我可以看到它,它也无法识别它,在 Studio 中的 References 下列出.

[System.Web.Extensions 程序集无法解析][1]

我尝试发布该主题的后续问题,因为我尝试按照答案中的说明进行操作,但它们没有用(我在项目>属性>应用程序中没有“目标框架”),但有人删除了它,因为我猜我不允许问后续问题?

我咨询了各种网站并按照说明进行操作,这里有一个示例: http ://www.asp.net/ajax/documentation/live/tutorials/ConsumingWebServicesWithAJAXTutorial.aspx

这是位于我网站根文件夹中的 HomepageService.asmx 的内容:

母版页的片段:

在我的页面顶部,我导入了 js:

PageRequestManager.js:

我的 web.config 是一团糟,但我很乐意发布它......

0 投票
0 回答
124 浏览

.net - 使用 POST 与 GET 时 .NET ScriptService 序列化的区别?

我正在从客户端(JS)调用 [ScripService] 中的方法。当我使用 POST 拨打电话时,一切正常。但是当我使用 GET 时会抛出这个错误:

反映类型时出现错误...无法序列化 System.Collections.Generic.IList`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral] 类型的成员 xxx,因为它是一个接口。

我使用 fiddler 发送相同的 POST 请求,这很有效。然后我编辑了使用 GET 的请求(在提琴手中),其他一切都是一样的;我得到和以前一样的错误。

为什么会这样?在执行的那一刻,成员 xxx 是一个具体的类型,当请求是 POST 时,它会序列化 OK。我错过了什么?

0 投票
0 回答
275 浏览

jquery - 使用 HttpContext.RewritePath() 时,脚本服务在 VS 开发服务器上返回 405?

我似乎遇到了一个非常具体的问题,对于问题的长度表示歉意。

我有一个脚本服务,实际居住在/somepath/service.asmx. 我正在使用 url 重写模块 (UrlRewritingNet v2.0) 来重写来自/service.asmx我的物理位置的调用。该模块使用 .Net 的HttpContext.RewritePath()功能。

我的服务公开了 method dosomething,并且在我的页面上有一个脚本调用:

当我在 IIS 中运行此代码时 - 它返回状态代码200,但当我在 VS 开发服务器上运行此代码时 - 它返回405 Method Not Allowed。来自堆栈跟踪的错误消息是:

请注意,在此消息中,路径似乎已正确路由。

有趣的是——我几乎可以肯定这是一个路由问题,因为当我将我的 ajax 调用更改为完整的 url 时/somepath/service.asmx/dosomething——IIS 和 VS 开发服务器都可以正常工作。

任何想法如何避免405?

0 投票
2 回答
353 浏览

c# - JSON 响应不再包含“d”!!!ASP.NET 4.5

我有一个问题,在此期间我们正在将 asp.net 3.5 转换为 asp.net 4.5 - 我们遇到了很多问题,但现在......我们终于把它加载得太多了,现在我在来自他们的服务的 JSON 响应中有奇怪的行为' t 包含“d”了!

下雪了

这打破了回调的javascript代码任何想法?或解释

0 投票
0 回答
83 浏览

asp.net - 对 ASP.NET ScriptService 的意外 GET 方法调用

我们的错误记录器定期接收以下错误:

System.InvalidOperationException:无法识别 URL 意外以“/TheMethodName”结尾的请求格式

引发此错误的原因是对脚本服务的请求使用 GET 方法,并且默认安全设置仅允许 POST 请求。

奇怪的是,在我们的代码中我们调用这个特定服务方法的唯一地方是通过$.ajax调用,而且它专门使用type: 'POST'. 应用程序中没有其他地方为此服务发出 GET 请求。

用户界面每 20 秒进行一次 POST 调用以检索一些数据,而 GET 似乎并没有对此进行干扰——它们只是无关紧要的。我查看了 IIS 日志,可以看到正确的 POST 请求,有时还有 GET 请求。

作为一个额外的问题,不仅仅是这个 Web 服务获得了额外的 GET 调用——我们还将这些调用记录到其他几个服务端点。

我的猜测是浏览器或代理服务器或其他东西自己进行这些调用(例如作为预取或某种缓存的一部分),但我没有证据证明这一点。在查看用户代理的错误请求时,它们来自各种浏览器。

有没有其他人以前见过这种情况,或者知道可能是什么原因造成的?