问题标签 [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.

0 投票
3 回答
1745 浏览

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 服务引用。

0 投票
1 回答
164 浏览

inversion-of-control - IoC 容器、WCF 和 ServiceHostFactories

我最近一直在阅读有关 IoC 的文章,我认为它肯定会在我正在开发的 WCF Web 服务中派上用场。但是,似乎 Ninject、StructureMap 和 Spring.Net(我只检查了这三个)需要将自定义Factory属性添加到*.svc文件中:

问题是,由于将部署服务的系统架构,我已经在使用自定义工厂,这是该项目的必备(要求)。我能以某种方式克服这种情况吗?

0 投票
2 回答
9169 浏览

wcf - 如何覆盖 WebServiceHostFactory MaxReceivedMessageSize?

那里有很多类似的问题,但我已经尝试了每个解决方案,但无济于事。

我们有一个使用 WebServiceHostFactory 初始化的 Web 服务,但如果向它抛出超过 64k 的数据,我们会收到“400 Bad Request”。通常,这可以通过提高 MaxReceivedMessageSize、MaxBufferSize 和 MaxBufferPoolSize 来解决。问题是使用 WebServiceHostFactory,Web.Config 被完全忽略。我在 ServiceModel 部分所做的任何更改都没有反映在服务中。

完全放弃 WebServiceHostFactory 并从头开始设置 web.config 会很好,但是没有它我们的服务将无法运行。其中一种方法具有流参数以及其他一些字符串参数。没有工厂,我们得到

因此,删除工厂不是一种选择。我无法确切知道工厂正在做什么来修复这个错误,但我花了 4 天的时间来解决这个问题,却一无所获。

我还尝试过以编程方式覆盖 MaxReceivedMessageSize,并附有一些我在该地方发现的示例:

第一个不起作用,因为工厂创建了一个不能转换为 WebHttpBinding 的 CustomBinding。第二个不起作用,因为绑定元素似乎是只读的 - 无论我将元素设置为什么,都没有任何变化,我通过在“更改”它们后读回值来验证这一点。第三次是最后一次尝试在其中添加一个新的绑定元素,但当然这也失败了。

现在我们完全不知所措。我们怎样才能让这个东西运行呢?你以为会这么简单!

多谢你们

网络配置

编辑,使用迄今为止不成功的建议修复:

0 投票
1 回答
363 浏览

multithreading - VSTO 插件内的 WebServiceHost

我正在开发一个应用程序级别的 VSTO 插件,其中包括一个带有嵌入式Webbrowser控件的 UI 和一个简单的 REST 样式服务,基于 WCF 的WebServiceHost. 该服务向嵌入式浏览器提供内容,特别是 Flash 电影。直到昨天,这曾经像一个魅力一样起作用。由于一些仍然未知的原因(可能是某些 .NET 更新改变了一些内部处理),当浏览器从嵌入式服务器加载 Flash 电影时,完整的 Word 应用程序现在冻结。当我将网络服务器代码移动到一个单独的进程时它仍然有效,并且当 Flash 电影已经在浏览器缓存中时它也有效,所以我很确定它是在插件中提供和显示 Flash 电影的组合这就是问题所在。

我做了一些研究(也许我应该早点做)并了解到多线程和 VSTO 插件不能很好地结合在一起。运行 Web 服务肯定意味着某种多线程。

所以我的问题是:有没有机会让这种架构可靠运行?如果是这样:我错过了什么?还是我应该更好地尝试另一种方法?如果是这样:你会推荐什么?

注意: 使用“file://”url 直接从磁盘加载内容不是一种选择,因为我不能保证一个通用的 docroot 并且需要在 UI 和内容服务之间放置一些逻辑。

0 投票
1 回答
1463 浏览

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:

0 投票
1 回答
2068 浏览

wcf - 是否可以通过服务类型的实例实例化 WebServiceHost 而无需无参数构造函数?

我正在尝试创建自托管System.ServiceModel.Web.WebServiceHost(.NET 4),但是我遇到了构造函数的问题。有三个选项:

  1. WebServiceHost()一个看起来毫无意义的无参数构造函数,因为无法指定服务的类型,甚至无法指定合同。回想起来,它什么也没做——只是一个不调用 base 的空默认构造函数。

  2. WebServiceHost(object singletonInstance, params Uri[] baseAddresses)我不想要一个单例实例,因为这是一个InstanceContextMode.PerCall类。

  3. WebServiceHost(System.Type serviceType, params Uri[] baseAddresses)我想作为服务实例化的类型没有无参数构造函数(这是此方法的要求)。我正在使用 NInject 将参数推送到构造函数中。但是,我试图将其作为自托管测试运行,所以我想避免 DI。

有没有这些方面的选择,或者我不必自我托管?

0 投票
2 回答
7035 浏览

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 并不重要。

响应是标准的,我无法控制自己:

任何帮助,将不胜感激。谢谢。

0 投票
3 回答
3476 浏览

rest - PHP REST API 和预定服务的托管服务

我已经使用 PHP 实现了 REST API。此 API 访问 MySQL 数据库。

我一直在寻找托管服务,但我不知道从哪里开始,大多数此类服务是指虚拟主机,据我所知,这不是我需要的。

任何人都可以建议任何免费或廉价的服务来支持我的要求吗?我还需要安排定期访问 REST API 的服务。这个还没有实现,因为我不确定托管服务通常支持哪种语言/框架。

任何帮助都非常感谢。

0 投票
2 回答
498 浏览

c# - 将 WebServiceHost 转换为 WCF 服务应用程序

我有一个工作控制台应用程序,其中所有地址和配置都在一个配置文件中。但是当我尝试将此代码移动到 WCF 服务应用程序时,我会遇到各种错误。

问题是 WCF 服务应用程序自动启动并且没有 main 方法,如控制台应用程序。不存在 main 方法时,如何定义 WCF 服务以启动 WebServiceHost?

0 投票
3 回答
2165 浏览

windows - 如何实现 WebServiceHost 身份验证?

我知道 webservicehost 类的身份验证不完全符合身份验证标准(当用户输入不正确的凭据时,返回 403 禁止而不是提示输入另一组凭据)。

我仍然想实现这个基本身份验证(会话开始时的用户名和密码,不需要 HTTPS - 见下图),因为它适合我对小型家庭项目的需求。

我想要的身份验证类型

我为 myService 提供的代码如下:

然后我有类似的代码来返回 HTML 以及接受其他参数组合。

在我的 Main 类中,我将这个服务实例化并打开为:

谁能给我提供代码来实现这个简单的身份验证?或者指点我一个详尽的教程?谢谢你的帮助