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