问题标签 [self-hosting]

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 回答
383 浏览

apache - 不应提供的 Apache 服务文件

今天我发现我全新安装的Apache HTTP Server 能够为我的C:\uploads\ 目录中的文件提供服务。

我有两个文件夹C:\uploads

  • C:\上传\模板
  • C:\上传\站点

这两个文件夹都包含testimage.jpg.

我发现如果我请求,Apache 将从模板文件夹中提供文件:

http://localhost/templates/testimage.jpg

但是,http://localhost/sites/testimage.jpg 404的!

OMG - 首先,为什么 Apache 首先提供模板文件夹?很特别吗?

其次,Apache 通过什么任意规则集不允许访问其他文件夹,例如站点?

我很混乱。也许我在安装过程中的某个地方走错了路。

0 投票
3 回答
6657 浏览

wcf - 具有传输安全性的 WCF 自托管服务(身份验证失败,因为远程方已关闭传输流。)

我有一个要添加传输安全性的自托管服务。我已将 WSHttpBinding.SecurityMode 设置为 Transport 并将 ClientCredentialType 设置为 HttpClientCredentialType.None。我已经创建了一个证书并使用 ServiceHost.Credentials.ServiceCertificate.SetCertificate() 将其设置到我的主机我还使用 netsh http add sslcert ipport=127.0.0.1:80 certhash=[MyCertHash] certstorename=MY appid= 注册了它[TheGuidOfTheAppTahtRunsTheService] verifyclientcertrevocation=disable

每当我尝试调用该服务时,都会收到以下错误消息:“身份验证失败,因为远程方已关闭传输流。”

这是否意味着客户端和服务器尝试相互验证?我怎样才能禁用它?为了清楚起见,我不想在客户端安装证书,我不是在寻找任何身份验证 atm,只是保护消息内容,如果可能的话。

0 投票
2 回答
4880 浏览

wcf - 想要将 WCF Web 服务作为 Windows 服务托管,而不是在 IIS 中托管

我想公开一些 Web 服务,但考虑将它们作为 Windows 服务托管,而不是在 IIS 中托管。

这是一个好习惯吗?

如是?如何使其安全?

我想对访问它的用户进行身份验证(针对我们的自定义安全数据库,并且还想确保请求来自我们的业务合作伙伴(X.509 证书????对此没有多大作用)。

感谢您在这方面的指点。

谢谢和问候, 阿杰

0 投票
8 回答
50556 浏览

wcf - 使用多个合同运行 WCF ServiceHost

使用单个合同运行 ServiceHost 可以正常工作,如下所示:

现在我想添加第二份(第 3、第 4、...)合同。我的第一个猜测是添加更多这样的端点:

但是当然这不起作用,因为在创建 ServiceHost 时我可以将 MyService1 作为参数或 MyService2 传递 - 所以我可以向我的服务添加很多端点,但都必须使用相同的合同,因为我只能提供一种实现?
我觉得我错过了重点,在这里。当然必须有某种方法为我添加的每个端点合同提供实现,或者不?

0 投票
3 回答
1531 浏览

.net - WCF 自托管服务是否比 IIS 托管选项处理更多或更少的负载?

托管选项是否会影响 WCF 服务可以处理的请求数量?

0 投票
0 回答
2360 浏览

wcf - 将 Silverlight 应用程序连接到自托管 WCF 服务

我创建了一个在 192.168.0.199:87 上运行的 WCF 服务。该服务可以正常工作。但是,当我在 VS 中创建一个 Silverlight 应用程序以在我的开发电脑上使用此服务时,我遇到了跨域问题。我将如何解决这个问题?该服务不是 IIS WCF 服务。我也不能在同一个端口上托管 WCF 服务和 Silverlight 应用程序。Silverlight 正在 192.178.0.199:87 上查找 clientaccesspolicy.xml,在本例中,这是我自托管的 WCF 服务的地址。

任何帮助都会很棒。

这是我的代码,我不知道我是否酿造了一些好东西。我的 app.config 文件位于此处。我认为这是一个端点问题,但我不确定。 http://213.46.36.140/app.config.txt

0 投票
2 回答
2086 浏览

.net - 单元测试时ServiceHost的地址冲突

我正在编写一个小型 WCF 托管引擎,它将根据 .config 文件动态创建 ServiceHost。总体思路是允许我们在运行时删除现有服务以及添加新服务,而无需使所有服务脱机。

我遇到了一个问题单元测试,表明这可能不像听起来那么容易。对于任何给定的端点,似乎只有一个 ServiceHost 存在(即使一个服务的多个不同端点可能存在于单个 ServiceHost 中)。这通常不是问题,但是当需要重新配置服务时,关闭原始 ServiceHost 实际上并不会终止该端点地址的注册。尝试为同一服务(这意味着使用相同的端点)创建另一个 ServiceHost 失败,并出现以下异常:

我实际上在单元测试期间遇到了错误。测试将运行一个单元,该单元尽可能地完全关闭 ServiceHosts 和托管引擎。然后创建托管引擎的另一个实例,该实例尝试再次重新创建相同的 ServiceHosts 以进行不同的测试。第二次测试遇到上面的错误。我猜在调用 ServiceHost.Close() 时,它实际上并没有破坏服务主机......所以它仍然在内存中徘徊。我无法判断 GC 是否正在清理旧的服务主机……问题在最初发生后仍然存在并没有消失(据我所知,我已经能够确定……到目前为止,我已经等了大约 30 分钟。 )

我的 system.serviceModel 配置文件如下:

0 投票
2 回答
1512 浏览

.net - WCF 服务自托管问题

我正在尝试在通过控制台应用程序启动的 Windows 服务中托管 WCF 服务。每个服务都是自己的项目,控制台应用程序也是如此。我已将 WCF 服务库中的 app.config 复制到控制台应用程序的 app.config 中,但我不断收到“服务有零个应用程序端点......”。我在几个地方读到该错误意味着我的类型引用不完全合格,但我已经双重(三重,四重......)检查了这一点。而且我很确定我有一个 app.config。我的调试目录中有 3 个 exe:Console App、Console App vshost、Win Service。Win 服务没有 app.config,所以我尝试复制它的 app.config 以防它正在寻找它,但没有运气。我还检查以确保配置正确命名(<program>.exe.config)。

这是我正在使用的。我的控制台应用程序创建一个实例JobSchdeuler并调用JobSchedulerConsoleStart.

主机代码:

应用程序配置

0 投票
1 回答
795 浏览

ajax - 用于 AJAX 客户端的自托管 WCF

我正在尝试自托管 WCF Web 服务并提供支持 ajax 的 HTTP 端点。我发现的关于 WCF 和 AJAX 的几乎所有内容都在谈论 IIS,我不想使用它。

我已经构建了一个简单的控制台应用程序来托管服务。我的服务只有一个方法:

这是 app.config 代码:

我可以访问服务元数据端点并查看 WSDL,但我无法从我的 ajax 客户端使用它。所以我的问题是: 1. 可以这样做吗?2.我显然缺少什么所需的配置?

注意我没有使用 .svc 文件

谢谢!

0 投票
1 回答
1162 浏览

c# - WCF 服务中的 Monitor 类的同步问题

我有一个自托管的 WCF 服务,但遇到以下问题:在创建服务实例 15 分钟后,操作合同方法中的 TryEnter 调用不断返回 false,但 Main 函数中的 TryEnter 调用,该函数也通过 Monitor 使用同步类,返回真。

这是我的应用程序和错误的描述:我正在 Windows XP SP2 的 Visual Studio 2008 (C#) 中开发自托管 WCF 服务。主机的 ServiceHost 实例是在 Main 函数的开头创建的。Main 函数运行一个 while (true) 循环,在此期间它执行定期读取、写入、维护等。有一个静态对象集合(可以随时间添加或删除),它们充当工作线程的容器。其中一些线程执行 Main 函数请求的定期工作,而其他线程则执行对远程设备的按需读取和写入。使用 Monitor 类(TryEnter 和 Exit 方法)对这些对象进行同步锁定。这些对象也可以通过使用相同功能的服务合同方法(服务)进行访问。在 Main 函数和服务方法之间进行同步。创建服务的实例后,它会以设计性能运行整整 15 分钟,之后从服务发出的每个 TryEnter(obj, timeout) 调用都会在指定的超时到期后返回 false。然而,这不会影响在 Main 函数中进行的 TryEnter 调用,即它们总是返回 true。我尝试更改 InstanceContextMode、ConcurrencyMode 的设置,以及服务限制属性 maxConcurrentCalls="1" ;maxConcurrentSessions="5" 并且每个配置都产生了相同的效果。当我重新启动主机应用程序时,服务会再次响应,但当我在应用程序运行时强行关闭并重新打开主机时不会响应(服务实例保留在内存中)。这不是服务不可用的情况,因为调用永远不会到达服务实例。该方法被调用,它的执行是在该方法的关键部分之前的 TryEnter 调用,并且 TryEnter 在超时(15 秒)后返回 false。我已经检查并仔细检查了 TryEnter 和 Exit 的配对——这些方法总是在临界区结束时释放锁。即使在 15 分钟期限结束后,其他不使用锁定或相关对象的合约操作也可以正常工作。我已经检查并仔细检查了 TryEnter 和 Exit 的配对——这些方法总是在临界区结束时释放锁。即使在 15 分钟期限结束后,其他不使用锁定或相关对象的合约操作也可以正常工作。我已经检查并仔细检查了 TryEnter 和 Exit 的配对——这些方法总是在临界区结束时释放锁。即使在 15 分钟期限结束后,其他不使用锁定或相关对象的合约操作也可以正常工作。

谢谢大家。节日快乐!