1
有没有一种方法可以自定义友好的URL与WCF没有IIS?有没有办法让自定义友好的URL与WCF没有IIS?
特别是我期待通过我自己的Windows服务承载一个app.config做这样的事情:
[WebGet(UriTemplate = "foo/{id}")]
public string GetFoo(string id)
{
...
}
有没有一种方法可以自定义友好的URL与WCF没有IIS?有没有办法让自定义友好的URL与WCF没有IIS?
特别是我期待通过我自己的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
更新:我只是重新此这里,问题是这样的:你的URI模板定义了一个名为{id}
参数,但在应用此URI模板的方法没有任何参数调用id
在它的参数列表:
[WebGet(UriTemplate = "foo/{id}")]
public string GetFoo(string fooID)
您需要确保这些事情匹配!在给定的URI模板,你需要你的方法声明更改为:
[WebGet(UriTemplate = "foo/{id}")]
public string GetFoo(string id)
(见参数 - 它的名字现在是id
),然后你应该罚款 - 至少它工作得很好,对我来说。
我试过这个,但它仍然没有使用我自定义的WebGet UriTemp。只有当我通过F5 Visual Studio Debug在IIS中托管服务DLL或没有Windows服务时。我认为使它适用于IIS的设置是: ' –
2011-03-06 15:44:57
我使用VS2010和C#通过所需的方式 – 2011-03-06 15:56:45
@wcf大师:更新了我的答案 - 我希望是这样的问题 - 至少现在适用于我。 – 2011-03-06 16:19:13