问题标签 [webservicehost]
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# - 如何获取 WSDL/描述以便可以在另一个项目中添加 WebReference?
我知道如何在 Visual Studio 中添加 WebReference,很简单。
我也知道如何创建一个普通的 ASP.NET Web 服务项目,但这不是我要做的。
因此,我运行的 WebService 如下所示:
问题是当我尝试在 Visual Studio 中向上述服务添加 WebReference 时,出现错误。
“添加服务引用”->“添加 Web 引用”,在 URL 中我写了我的 URL,http ://example.com:8080
然后我得到“服务......找不到端点”。以及 Add Web Reference 框中的错误消息:
下载“ http://example.com:8080/ ”时出错。请求失败,HTTP 状态为 404:未找到。下载“ http://example.com:8080/$metadata ”时出错。请求失败,HTTP 状态为 404:未找到。
如果我打开 Web 浏览器并直接访问http://example.com:8080/GetArea,该服务将按预期调用/执行。
因此,将问题改写得更短:WSDL/描述不存在,因此我无法添加 Web 服务引用。
inversion-of-control - IoC 容器、WCF 和 ServiceHostFactories
我最近一直在阅读有关 IoC 的文章,我认为它肯定会在我正在开发的 WCF Web 服务中派上用场。但是,似乎 Ninject、StructureMap 和 Spring.Net(我只检查了这三个)需要将自定义Factory
属性添加到*.svc
文件中:
问题是,由于将部署服务的系统架构,我已经在使用自定义工厂,这是该项目的必备(要求)。我能以某种方式克服这种情况吗?
wcf - 如何覆盖 WebServiceHostFactory MaxReceivedMessageSize?
那里有很多类似的问题,但我已经尝试了每个解决方案,但无济于事。
我们有一个使用 WebServiceHostFactory 初始化的 Web 服务,但如果向它抛出超过 64k 的数据,我们会收到“400 Bad Request”。通常,这可以通过提高 MaxReceivedMessageSize、MaxBufferSize 和 MaxBufferPoolSize 来解决。问题是使用 WebServiceHostFactory,Web.Config 被完全忽略。我在 ServiceModel 部分所做的任何更改都没有反映在服务中。
完全放弃 WebServiceHostFactory 并从头开始设置 web.config 会很好,但是没有它我们的服务将无法运行。其中一种方法具有流参数以及其他一些字符串参数。没有工厂,我们得到
因此,删除工厂不是一种选择。我无法确切知道工厂正在做什么来修复这个错误,但我花了 4 天的时间来解决这个问题,却一无所获。
我还尝试过以编程方式覆盖 MaxReceivedMessageSize,并附有一些我在该地方发现的示例:
第一个不起作用,因为工厂创建了一个不能转换为 WebHttpBinding 的 CustomBinding。第二个不起作用,因为绑定元素似乎是只读的 - 无论我将元素设置为什么,都没有任何变化,我通过在“更改”它们后读回值来验证这一点。第三次是最后一次尝试在其中添加一个新的绑定元素,但当然这也失败了。
现在我们完全不知所措。我们怎样才能让这个东西运行呢?你以为会这么简单!
多谢你们
网络配置
编辑,使用迄今为止不成功的建议修复:
multithreading - VSTO 插件内的 WebServiceHost
我正在开发一个应用程序级别的 VSTO 插件,其中包括一个带有嵌入式Webbrowser
控件的 UI 和一个简单的 REST 样式服务,基于 WCF 的WebServiceHost
. 该服务向嵌入式浏览器提供内容,特别是 Flash 电影。直到昨天,这曾经像一个魅力一样起作用。由于一些仍然未知的原因(可能是某些 .NET 更新改变了一些内部处理),当浏览器从嵌入式服务器加载 Flash 电影时,完整的 Word 应用程序现在冻结。当我将网络服务器代码移动到一个单独的进程时它仍然有效,并且当 Flash 电影已经在浏览器缓存中时它也有效,所以我很确定它是在插件中提供和显示 Flash 电影的组合这就是问题所在。
我做了一些研究(也许我应该早点做)并了解到多线程和 VSTO 插件不能很好地结合在一起。运行 Web 服务肯定意味着某种多线程。
所以我的问题是:有没有机会让这种架构可靠运行?如果是这样:我错过了什么?还是我应该更好地尝试另一种方法?如果是这样:你会推荐什么?
注意: 使用“file://”url 直接从磁盘加载内容不是一种选择,因为我不能保证一个通用的 docroot 并且需要在 UI 和内容服务之间放置一些逻辑。
channelfactory - 使用 WebHttpBinding 的 ChannelFactory 在执行 ServiceContract OperationContract 时始终 POST
我有一个通过 WebServiceHost 托管的服务,我需要将一些调用委托给网络上的其他 REST 服务。
我构建了一个 ClientBase 具体类来处理这个问题。流程如下所示:
http://localhost:8000/users/my@email.com -> 我的 WebServiceHost 实例 -> ClientBase -> REST 服务
一切都运行良好,直到我意识到来自 ClientBase 的所有调用都使用 POST 作为动词。为了确保我没有对 ClientBase 做任何愚蠢的事情,我手动构建了一个 ChannelFactory 并使用它。不走运,无论 ClientBase、ChannelFactory 甚至 ServiceContract 装饰如何,每个调用仍然使用 POST。
然后我开始隔离代码,并意识到当原始调用不是来自我的 WebServiceHost 正在处理的请求中时,我的简单 ChannelFactory 工作。
这是一个蒸馏的 Program.cs,它展示了确切的问题,来自 Program.Main 的 MakeGetCall() 按预期工作,但来自 MyService.GetUser 的调用将始终 POST:
wcf - 是否可以通过服务类型的实例实例化 WebServiceHost 而无需无参数构造函数?
我正在尝试创建自托管System.ServiceModel.Web.WebServiceHost
(.NET 4),但是我遇到了构造函数的问题。有三个选项:
WebServiceHost()
一个看起来毫无意义的无参数构造函数,因为无法指定服务的类型,甚至无法指定合同。回想起来,它什么也没做——只是一个不调用 base 的空默认构造函数。WebServiceHost(object singletonInstance, params Uri[] baseAddresses)
我不想要一个单例实例,因为这是一个InstanceContextMode.PerCall
类。WebServiceHost(System.Type serviceType, params Uri[] baseAddresses)
我想作为服务实例化的类型没有无参数构造函数(这是此方法的要求)。我正在使用 NInject 将参数推送到构造函数中。但是,我试图将其作为自托管测试运行,所以我想避免 DI。
有没有这些方面的选择,或者我不必自我托管?
c# - 让 POST 端点在自托管 (WebServiceHost) C# web 服务中工作?
所以,我一直在搞乱网络服务一段时间,而且我一直在回归一些基础知识,我似乎永远不会正确。
问题一:
在 .NET/C# 中使用 WebServiceHost 时,您可以将方法/端点定义为使用 GET/POST/等。设置一个 GET 方法很简单,它几乎可以直接工作,而且很容易理解它是如何工作的。例如:
如果我调用 http:///MyWebService/PutMessage/{MyJsonString} 我会通过该方法,并且一切都很好(或多或少)。
但是,当我将其定义为POST时,这意味着什么?
UriTemplate 在这里做什么?如果我进行 POST,我希望数据不包含在 URI 中,而是包含在帖子的“数据部分”中。但是我是否在数据部分定义变量名?WebServiceHost/.NET如何知道post的“数据部分”中包含的内容是要放入变量jsonString中的?如何从客户端(不是 C#,让我们说 JQuery)发布数据,以便在服务器端正确解释它?
(WebMessageFormat 是如何影响事物的?我到处都读过这方面的内容(MSDN、Stackoverflow 等),但还没有找到一个清晰而好的答案。)
问题2:
在我试图理解这一点时,我想我会做一个非常简单的 POST 方法,如下所示:
然后我尝试使用 Fiddler 调用此方法,但这根本不起作用。我只是收到一个 400 错误,说“HTTP/1.1 400 Bad Request”。我在方法代码的第一行有一个断点,方法本身不包含任何内容:
同样,.NET 怎么知道我使用 Fiddler 发布的内容应该包含在“字符串 pc”中?它如何将其解释为字符串,以及什么类型的字符串(UT8、ASCII 等)?
这是从 Fiddler 发送的 RAW HTTP 请求:
据我所知,我使用什么类型的 Content-type 并不重要。
响应是标准的,我无法控制自己:
任何帮助,将不胜感激。谢谢。
rest - PHP REST API 和预定服务的托管服务
我已经使用 PHP 实现了 REST API。此 API 访问 MySQL 数据库。
我一直在寻找托管服务,但我不知道从哪里开始,大多数此类服务是指虚拟主机,据我所知,这不是我需要的。
任何人都可以建议任何免费或廉价的服务来支持我的要求吗?我还需要安排定期访问 REST API 的服务。这个还没有实现,因为我不确定托管服务通常支持哪种语言/框架。
任何帮助都非常感谢。
c# - 将 WebServiceHost 转换为 WCF 服务应用程序
我有一个工作控制台应用程序,其中所有地址和配置都在一个配置文件中。但是当我尝试将此代码移动到 WCF 服务应用程序时,我会遇到各种错误。
问题是 WCF 服务应用程序自动启动并且没有 main 方法,如控制台应用程序。不存在 main 方法时,如何定义 WCF 服务以启动 WebServiceHost?
windows - 如何实现 WebServiceHost 身份验证?
我知道 webservicehost 类的身份验证不完全符合身份验证标准(当用户输入不正确的凭据时,返回 403 禁止而不是提示输入另一组凭据)。
我仍然想实现这个基本身份验证(会话开始时的用户名和密码,不需要 HTTPS - 见下图),因为它适合我对小型家庭项目的需求。
我为 myService 提供的代码如下:
然后我有类似的代码来返回 HTML 以及接受其他参数组合。
在我的 Main 类中,我将这个服务实例化并打开为:
谁能给我提供代码来实现这个简单的身份验证?或者指点我一个详尽的教程?谢谢你的帮助