gpt4 book ai didi

c# - 无法访问 Mono 中的 WCF 服务?

转载 作者:太空狗 更新时间:2023-10-29 23:47:49 26 4
gpt4 key购买 nike

我在 linux 和 os x 上都试过了,但我遇到了同样的问题。这是带有 Mono 最新稳定版本的 MonoDevelop 2.6。在我的 Mac 上是 v 2.10.2。

这几天前对我有用。我会将浏览器指向“http://localhost:8000/number/test”,然后会收到一条消息,内容类似“在命令行中,键入 svcutil http://localhost:8000/number/test[somethingmore] "

现在我在 Linux 和 Mac 上的浏览​​器中得到的消息是:

<Fault xmlns="http://schemas.microsoft.com/ws/2005/05/envelope/none">


a:InternalServiceFault
由于内部错误,服务器无法处理请求。服务器可能能够返回异常详细信息(这取决于服务器设置)。

这曾经有效,所以我不确定我是否遗漏了一些重要的东西,或者 Mono 有什么问题。我希望你有一个想法。这几乎完全来自 MSDN 教程(有一些更改)。

(对于那些知情的人,我知道到目前为止这还不能保存状态,因为它还没有为 session 设置,当我收到这个错误时我正在努力到达那里)。

这是我的类(class):

using System;
using System.ServiceModel;

namespace NumberService
{
[ServiceContract]
public interface INumberService
{
[OperationContract]
void Add(int val);

[OperationContract]
void Subtract(int val);

[OperationContract]
int Result();
}
}

using System;

namespace NumberService
{
public class NumberService : INumberService
{
private int val = 1;


public NumberService ()
{
Console.WriteLine("NumberService created.");
}

public void Add(int val)
{
this.val += val;
}

public void Subtract(int val)
{
this.val -= val;
}


public int Result()
{
return val;
}
}
}



using System;
using System.ServiceModel;
using System.ServiceModel.Description;

namespace NumberService
{
class MainClass
{
public static void Main (string[] args)
{
Uri uri = new Uri("http://localhost:8000/number/test");

ServiceHost selfHost = new ServiceHost(typeof(NumberService), uri);


try
{


// Step 3 of the hosting procedure: Add a service endpoint.
selfHost.AddServiceEndpoint(
typeof(INumberService),
new WSHttpBinding(SecurityMode.None),
"NumberService");


// Step 4 of the hosting procedure: Enable metadata exchange.
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
selfHost.Description.Behaviors.Add(smb);

// Step 5 of the hosting procedure: Start (and then stop) the service.
selfHost.Open();
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();

// Close the ServiceHostBase to shutdown the service.
selfHost.Close();
}
catch (CommunicationException ce)
{
Console.WriteLine("An exception occurred: {0}", ce.Message);
selfHost.Abort();
}


}


}
}

最佳答案

您调试时是否尝试过访问服务?从 InternalServiceFault 看来,似乎有什么原因导致您的服务失败。

尼克拉斯

关于c# - 无法访问 Mono 中的 WCF 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7641896/

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