gpt4 book ai didi

c# - 使用 WebHttpBinding 为 WCF 服务定义 'app.config'

转载 作者:行者123 更新时间:2023-11-30 21:12:41 24 4
gpt4 key购买 nike

我有一个 WCF 服务,它允许在不使用 MessageContract 的情况下上传文件。

[OperationContract, WebInvoke(UriTemplate = "UploadFile?filename={filename}")]
bool UploadFile(string filename, Stream fileContents);

我可以在 Stream 对象旁边使用另一个参数,因为它是 UriTemplate 的一部分。由于该服务作为托管 Windows 服务运行,我必须手动启动 ServiceHost。

protected override void OnStart(string[] args)
{
FileServiceHost = new ServiceHost(typeof(FileService), new Uri("http://" + Environment.MachineName + ":8000/FileService"));
FileServiceHost.AddServiceEndpoint(typeof(IFile), new WebHttpBinding(), "").Behaviors.Add(new WebHttpBehavior());
FileServiceHost.Open();
}

有了所有这些,服务就可以启动并正常工作了。但是我想将上面的一些移动到 app.config 文件中。为此,我注释掉了 OnStart 的第二行并将第一行替换为 FileServiceHost = new ServiceHost(typeof(FileService))。然后我将该信息添加到 app.config 中......

<system.serviceModel>

<services>
<service name="Test.Server.FileService" behaviorConfiguration="DefaultBehavior">
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8000/FileService"/>
</baseAddresses>
</host>
<endpoint address="" binding="webHttpBinding" contract="IFile"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>

<behaviors>
<serviceBehaviors>
<behavior name="DefaultBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>

服务突然无法启动。它在 OnStart 方法的 FileServiceHost.Open 上抛出此异常:“要使 UploadFile 操作中的请求成为流,该操作必须有一个类型为 Stream 的参数。”

我在 app.config 中定义服务的方式一定有问题,因为当我从那里删除它时,一切正常。我在这里做错了什么?

最佳答案

这是我通过添加 webHttpBinding 来解决问题的方法端点行为。

已添加 behaviorConfiguration="TestBehavior"<endpoint address="" binding="webHttpBinding" contract="IFile"/> , 然后定义 TestBehavior如下:

<endpointBehaviors>
<behavior name="TestBehavior">
<webHttp />
</behavior>
</endpointBehaviors>

关于c# - 使用 WebHttpBinding 为 WCF 服务定义 'app.config',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7314241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com