我試圖在c#mvc web項目中創建一個wcf服務。我添加的類型爲「WCF服務」的新項目,並添加所提供的接口測試方法:在web項目中託管WCF服務
[ServiceContract]
public interface ITest
{
[OperationContract]
void DoWork();
bool testWorking();
}
和所提供的服務:
public class Test : ITest
{
public void DoWork()
{
}
public bool testWorking()
{
return true;
}
}
然後,我已經走了過來web.config文件,並添加以下到system.ServiceModel標籤:
<services>
<service name="Test" behaviorConfiguration="MyServiceTypeBehaviors">
<endpoint address="" binding="wsHttpBinding" contract="ITest">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceTypeBehaviors" >
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
在這一點上,據我瞭解,我應該能夠在瀏覽器中查看這一點,並得到一個測試消息告訴我這是關於我的時間補充了客戶使用這項服務。但實際發生的事情是,我的瀏覽器下載.svc文件!
兩個問題:
1)到底什麼是我做錯了什麼?爲什麼我沒有看到預期的消息?
2)有什麼辦法可以自動啓動WCF測試工具來運行此服務?我能找到的唯一指導方針是從WCF項目開始。
更新:(SVC文件的內容 - 從評論搶下)
<%@ ServiceHost Language="C#" Debug="true"
Service="myemployersaddress.com.Test" CodeBehind="Test.svc.cs" %>
您是否在IIS中託管服務?看起來您沒有爲.svc安裝正確的處理程序。另外請注意,服務的名稱屬性和端點的合同屬性必須包含包含名稱空間的類型名稱 - 但它不是當前問題的根源。 – 2011-02-15 13:05:28
我確實對命名空間感到疑惑 - 因爲它是在同一個項目中託管的,所以他們沒有必要,但是謝謝澄清。我使用Visual Studio提供的默認服務器在IIS中運行此程序......並不完全知道如何安裝正確的處理程序,如果它們不在那裏的話。 – 2011-02-15 13:13:52
SVC文件中的`Service = ...`也應**引用服務**類的完全限定名 - 例如`服務= YourNamespace.Test`。這是你的svc文件中的情況?這裏的服務條目不是任何類型的網址或類似的東西...... – 2011-02-15 13:42:41