有没有办法在没有IIS的情况下使用WCF自定义友好URL?

有没有办法在没有IIS的情况下使用WCF自定义友好URL?

特别是我希望通过我自己的Windows服务中托管的app.config来做这样的事情:

[WebGet(UriTemplate = "foo/{id}")] public string GetFoo(string id) { ... } 

是的 – 在你自己的NT服务中托管这个,并在app.config中定义一个http基地址。 您在服务合同中定义的URI模板将脱离该基址:

           

然后你的URI模板将被添加到这个基地址,所以在这种情况下,你可以调用GetFoo方法:

 http://YourServer:9091/Services/foo/42 

更新:我刚刚在这里重新创建了这个,问题是:你的URI模板定义了一个名为{id}的参数,但你应用这个URI模板的方法在它的参数列表中没有任何名为id的参数:

 [WebGet(UriTemplate = "foo/{id}")] public string GetFoo(string fooID) 

你需要确保这些东西匹配! 使用给定的URI模板,您需要将方法声明更改为:

 [WebGet(UriTemplate = "foo/{id}")] public string GetFoo(string id) 

(参见参数 – 它的名字现在是id )然后你应该没问题 – 至少它对我来说效果很好。