有没有一种方法可以在不使用 IIS 的情况下使用 WCF 自定义友好 URL?
特别是,我希望通过我自己的 Windows 服务中托管的 app.config 执行类似的操作:
[WebGet(UriTemplate = "foo/{id}")]
public string GetFoo(string id)
{
...
}
是的,当然 - 将其托管在您自己的 NT 服务中,并在您的app.config
,定义一个http基地址。您在服务合同中定义的 URI 模板将脱离该基地址:
<services>
<service name="YourNamespace.YourServiceClass">
<host>
<baseAddresses>
<add baseAddress="http://YourServer:9091/Services/" />
</baseAddresses>
</host>
<endpoint address=""
binding="webHttpBinding"
contract="YourNamespace.IYourService" />
</service>
</services>
然后你的 URI 模板将被添加到这个基地址,所以在这种情况下,你GetFoo
方法可以在以下位置调用:
http://YourServer:9091/Services/foo/42
Update:我刚刚在这里重新创建了这个,问题是这样的:你的 URI 模板定义了一个名为{id}
,但是您应用此 URI 模板的方法没有任何名为id
在它的参数列表中:
[WebGet(UriTemplate = "foo/{id}")]
public string GetFoo(string fooID)
您需要确保这些东西匹配!对于给定的 URI 模板,您需要将方法声明更改为:
[WebGet(UriTemplate = "foo/{id}")]
public string GetFoo(string id)
(查看参数 - 它的名称现在是id
)然后你应该没问题 - 至少对我来说效果很好。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)