问题标签 [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.
c# - Webservice 复杂类型和类继承
使用以下 Web 服务定义,将 aClientArgs 用作复杂类型:
然后将 aClientArgs 定义为子类:
为 save_client 参数返回以下 WSDL 片段:
当我期待以下内容时:
因此,出于 Web 服务的目的,.NET WebService 似乎没有将继承的属性视为参数/变量。如何让 .NET 也使用基类的属性?
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 中,但仍然可以使用智能感知。
提前致谢...
c# - 派生类型的 ASP.NET ScriptService 反序列化问题
我有一个ScriptService
Web 方法(.NET 3.5),它采用抽象基类型的单个参数:
和:
通常,当方法被调用时,item
将是一个Group
包含Instance
和/或Group
对象。我从 jQuery 调用这个服务;我没有使用 Microsoft 客户端框架。调用其他方法工作正常。
问题: 当我进行调用时,甚至在调用我的方法之前就引发了异常。例如,如果我的电话是:
...我得到一个InvalidOperationException
:
如果我删除__type
JSON 对象的成员或将其更改为Namespace.Item
(并从中删除abstract
修饰符Item
),异常就会消失,但生成的反序列化对象显然有点没用。
我错过了什么?
asp.net - 允许对 ASP.NET ScriptService 的跨域请求
我已经使用 [ScriptService] 属性启动并运行了一个 ASP.NET Web 服务。从我从这篇文章中读到的内容:
默认情况下,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 服务的意义所在?
asp.net - 如何让 ASP.NET WebForms Routing 正确路由 .asmx JSON 调用?
我正在尝试在旧版 ASP.NET WebForms 应用程序中实现多租户。我希望 URL 指示正确的客户端,如下所示:
但是,我无法让它正确地路由 .asmx。此路由规则可以很好地提取所有传入的 url:
但我在处理 .asmx 调用时遇到问题。下面是我的 IRouteHandler。我得到的错误是:
它应该是 JSON,但由于某种原因它不起作用。我正在设置内容类型 - 如果我在没有路由的情况下发送相同的请求,它工作正常。
相关链接:
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 是一团糟,但我很乐意发布它......
.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。我错过了什么?
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?
c# - JSON 响应不再包含“d”!!!ASP.NET 4.5
我有一个问题,在此期间我们正在将 asp.net 3.5 转换为 asp.net 4.5 - 我们遇到了很多问题,但现在......我们终于把它加载得太多了,现在我在来自他们的服务的 JSON 响应中有奇怪的行为' t 包含“d”了!
下雪了
这打破了回调的javascript代码任何想法?或解释
asp.net - 对 ASP.NET ScriptService 的意外 GET 方法调用
我们的错误记录器定期接收以下错误:
System.InvalidOperationException:无法识别 URL 意外以“/TheMethodName”结尾的请求格式
引发此错误的原因是对脚本服务的请求使用 GET 方法,并且默认安全设置仅允许 POST 请求。
奇怪的是,在我们的代码中我们调用这个特定服务方法的唯一地方是通过$.ajax
调用,而且它专门使用type: 'POST'
. 应用程序中没有其他地方为此服务发出 GET 请求。
用户界面每 20 秒进行一次 POST 调用以检索一些数据,而 GET 似乎并没有对此进行干扰——它们只是无关紧要的。我查看了 IIS 日志,可以看到正确的 POST 请求,有时还有 GET 请求。
作为一个额外的问题,不仅仅是这个 Web 服务获得了额外的 GET 调用——我们还将这些调用记录到其他几个服务端点。
我的猜测是浏览器或代理服务器或其他东西自己进行这些调用(例如作为预取或某种缓存的一部分),但我没有证据证明这一点。在查看用户代理的错误请求时,它们来自各种浏览器。
有没有其他人以前见过这种情况,或者知道可能是什么原因造成的?