2011-03-06 71 views

回答

1

是肯定的 - 这主人自己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),然后你应该罚款 - 至少它工作得很好,对我来说。

+0

我试过这个,但它仍然没有使用我自定义的WebGet UriTemp。只有当我通过F5 Visual Studio Debug在IIS中托管服务DLL或没有Windows服务时。我认为使它适用于IIS的设置是: ' – 2011-03-06 15:44:57

+0

我使用VS2010和C#通过所需的方式 – 2011-03-06 15:56:45

+0

@wcf大师:更新了我的答案 - 我希望是这样的问题 - 至少现在适用于我。 – 2011-03-06 16:19:13

相关问题