我正在松散地遵循WCF中的方法正确的方法...手动方式来设置我的WCF服务.
我有一个手动生成的代理类,如下所示:
// Setup a client so we can call our web services.
public class EmployeeClient :IEmployeeService
{
private readonly IEmployeeService EmployeeChannel;
public EmployeeClient(Binding binding, string address)
{
var endpointAddress = new EndpointAddress(address);
EmployeeChannel = new ChannelFactory<IEmployeeService>
(binding, endpointAddress).CreateChannel();
}
public EmployeeResponse SaveOrUpdateEmployee(EmployeeContract employee)
{
return EmployeeChannel.SaveOrUpdateEmployee(employee);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我想打电话给其中的一些服务.但我不想使用任何配置文件(我正在设置一些集成测试,我不希望有更多的依赖项.)
我目前正试图像这样打电话给他们:
serviceHost = SelfServiceHost.StartupService();
employeeClient = new EmployeeClient(new BasicHttpBinding(),
SelfServiceHost.StartUpUrl);
EmployeeResponse employeeResponse = employeeClient.SaveOrUpdateEmployee(emp);
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我得到这个例外:
System.ServiceModel.ProtocolException:Content Type text/xml; 服务http:// localhost:8090/EmployeeService不支持charset = utf-8 .客户端和服务绑定可能不匹配.---> System.Net.WebException:远程服务器返回错误:(415)无法处理消息,因为内容类型为'text/xml; …
我们使用LoopBack REST框架来公开我们的数据库(和业务逻辑).我们需要允许客户在数据库(单租户和多租户)中创建可通过REST端点访问的自定义表.所有客户都需要使用相同的公共(生产)REST端点,这些端点将在多个服务器上公开.但是,只有创建它们的客户才能访问自定义表和关联的REST端点.这意味着我们无法将自定义表的模型写入光盘.我们需要能够在生产REST端点的上下文中动态创建实际的REST端点.
问题:我们如何在代码中动态创建自定义REST端点(动态)而无需将模型写入光盘上的JSON文件?
我希望用户能够在端点中写入特定的帐号,并尝试验证端点参数是否存在于我的数据库中。我无法让它工作,请问我做错了什么?
我的验证
const validateReq: [
param('accountNumber').exists().custom(acctNo => accountNumberExist(acctNo)),]
Run Code Online (Sandbox Code Playgroud)
我的 accountNumberExist 函数
accountNumberExist(inputAcct) {
const isfound = accounts.find(account => account.accountNumber === inputAcct);
if (isfound === undefined) throw new Error('Account Number not found');
}
Run Code Online (Sandbox Code Playgroud)
我的账户档案
const accounts = [
{
id: 1,
accountNumber: 1234567890,
createdOn: new Date(),
owner: 1,
type: 'current',
balance: 23444.43,
status: 'active',
},
{
id: 2,
accountNumber: 1234167890,
createdOn: new Date(),
owner: 1,
type: 'savings',
balance: 2233444.43,
status: 'active',
},
{
id: 3,
accountNumber: 9987654321,
createdOn: new Date(),
owner: …
Run Code Online (Sandbox Code Playgroud) 我正在尝试对内部 docker 容器进行 api 调用,但对于每个请求 url,我都必须在 Nginx 配置中创建 proxy_pass。我读过一些文章,最后的斜杠应该可以将某些 url 之后的所有内容传递到 proxy_pass。
www.example.com/api -> 重定向到正确的端点
www.example.com/api/2020 -> 这不会重定向到 http://api/2020
location = /api/ {
proxy_pass http://api/;
}
Run Code Online (Sandbox Code Playgroud)
那么为什么这个配置不将 2020“参数”传递到 api 端点呢?当我进行如下配置时它会起作用:
location = /api/2020 {
proxy_pass http://api/2020;
}
Run Code Online (Sandbox Code Playgroud)
但问题是它是一个参数,所以它可能是任何数字,如何解决这个问题?
我读过其他帖子,但我再次问这个问题,以便更广泛地了解参数传递的可能性。真的有必要为此使用正则表达式吗?
我只是创建一个从文件系统返回图像的烧瓶端点。我已经用邮递员做了一些测试,效果很好。这是执行此操作的指令:
return send_file(image_path, mimetype='image/png')
Run Code Online (Sandbox Code Playgroud)
现在我尝试同时发回多个图像,例如在我的例子中,我尝试分别发回给定图像中出现的每张脸。谁能知道如何做到这一点?
我试图弄清楚如何为我创建的WF服务(MyFoo.xamlx)提供端点等.通常,当您创建服务时,您需要使用服务名称=""来反映您创建的服务类型?即通过填写这样的东西:
<Service name="MyNameSpace.Foo" behaviorConfiguration="myFooBehaviorConfig">
这适用于典型的.svc场景,我可以正常工作.只有将这个概念映射到.xamlx服务?在那里,如果我有Foo.xamlx放在服务名称内部不起作用 - 或似乎不起作用(因为没有启用元数据).
如果我然后从服务中删除了behaviorConfiguration属性,并从 标记中删除了myFooBehaviorConfig<behavior/>
- 因为它基本上会为web配置带来更多的全局设置 - 繁荣!我可以看到.xamlx暴露的方法/操作?
<serviceBehaviors>
<behavior name="foo" >
VS
<serviceBehaviors>
<behavior >
起初这很好,不需要任何努力,但同时我不希望开发人员访问HTTP端点或netpipe.我只希望他们通过我指定的net.tcp端口进入.为了做到这一点,我需要以<Service name=""/>
某种方式匹配xamlx?
我也尝试过使用创建一个空的.svc文件然后以那种方式指向xamlx的技巧(这样开发人员总是假定它的.svc而不是.xamlx)
<%@ ServiceHost Language="C#" Debug="true" Service="ActivityHubService.xamlx" Factory="System.ServiceModel.Activities.Activation.WorkflowServiceHostFactory" %>
再次,如果我删除命名行为等,这也可以通过foo.svc ..但我似乎无法破解<service>
与freakin xamlx 的整个匹配!:) 呵呵.
令人沮丧..
这个领域的专家是谁?
wcf web-config workflowservice endpoint workflow-foundation-4
我尝试从sharpoint调用我的自定义svc文件时收到此错误.我在这里发布了我的web.config文件,你们可以告诉我这个错误吗?
我试图在sharepoint中拥有我的自定义web服务,所以我创建了一个项目,但是由于这个错误,我无法浏览我的web方法.
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<services>
<service behaviorConfiguration="AlertWcfService.CustomServiceBehaviour"
name="AlertWcfService.AlertService">
<endpoint address="http://localhost:2000/" binding="basicHttpBinding" bindingConfiguration="basicHttpBindingConfiguration"
contract="AlertWcfService.IAlertService" >
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:2000/"></add>
</baseAddresses>
</host>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBindingConfiguration">
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="Certificate" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="AlertWcfService.CustomServiceBehaviour">
<!--<serviceMetadata httpsGetEnabled="false"/>-->
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="false"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Run Code Online (Sandbox Code Playgroud) 根据MSDN上的documenation,IPEndPoint
可以有它Address
和Port
属性进行设置.
为什么这个课程设计为可变的?似乎它应该是不可变的,因为类似的原因是相同String
的.
这个类的不可变版本是否更适合传递线程,事件处理程序等?
我有一条骆驼路线,如下所示
from("activemq:queue:upload" )
.pollEnrich().simple("file:basePath/${header.ID}?noop=true&recursive=true")
.aggregationStrategy(new ExampleAggregationStrategy())
.timeout(2000)
.toD("ftp:${header.destinationURI}")
Run Code Online (Sandbox Code Playgroud)
在我的文件系统中file:basePath/${header.ID}
包含多个文件夹。执行上述路由时,只会将第一个文件夹中的第一个文件复制到 ftp 服务器。剩余的文件夹(带子文件夹)没有被复制到 ftp 服务器!
而ExampleAggregationStrategy()
类的aggregate()
方法看起来像以下
@Override
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
String destinationURI = "populatedURI";
oldExchange.setOut(newExchange.getIn());
oldExchange.getOut().setHeader("ID", oldExchange.getIn().getHeader("ID"));
oldExchange.getOut().setHeader("destinationURI", destinationURI);
oldExchange.setFromEndpoint(newExchange.getFromEndpoint());
oldExchange.setFromRouteId(newExchange.getFromRouteId());
return oldExchange;
}
Run Code Online (Sandbox Code Playgroud)
我也试过设置properties and onCompletions
。仍然没有运气!我错过了什么aggregationStrategy
吗?
如何成功复制所有文件和文件夹pollEnrich
?
我已经在AWS Sagemaker上训练了信用欺诈数据集并创建了模型的端点。假设我想将其作为服务提供给我的朋友。他有一些信用数据,想知道交易是否欺诈。他希望使用我的端点。我该如何分享?
endpoint ×10
wcf ×3
api ×2
alert ×1
apache-camel ×1
binding ×1
c# ×1
docker ×1
dynamic ×1
express ×1
flask ×1
immutability ×1
java ×1
javascript ×1
jms ×1
loopbackjs ×1
nginx ×1
nginx-config ×1
python ×1
rest ×1
strongloop ×1
svc ×1
web-config ×1