2014-01-06 109 views
0

我已經基於ASP.Net網站創建了WFC RIA服務,併爲RIA服務添加了nuget包。我還通過擴展DomainService類創建了一個名爲「FactoryService」的服務。如何獲取WCF RIA服務URL

我已經通過創建一個帶有指向該服務的DomainDataSource的GridView來測試該服務。該服務正在工作。

現在我想從其他客戶端訪問服務,因爲我啓用了SOAP端點。但是我找不到服務的URL到svc文件。我需要此URL來將服務引用添加到我的其他項目。我如何找到服務網址?

我試過以下的URL和所有的返回值404(命名空間「WebApplication3」,DomainService類「FactoryService」)。

- http://localhost:15066/WebApplication3-FactoryService.svc 
- http://localhost:15066/services/WebApplication3-FactoryService.svc 
- http://localhost:15066/ClientBin/WebApplication3-FactoryService.svc 
- http://localhost:15066/FactoryService.svc 
- http://localhost:15066/services/FactoryService.svc 
- http://localhost:15066/ClientBin/FactoryService.svc 
+0

示例應用程序在http://sdrv.ms/1cSMl4P – Elangovan

+0

中可用在附加說明中,所有前三個都可以使用。域服務模塊將服務以正確合格的服務類名稱結尾的所有請求。任何中間路徑片段都將被忽略。 – John

回答

1

我發現了這個問題。在DomainService類中,我錯過了用[EnableClientAccess()]對其進行註釋。

域服務類必須與 EnableClientAccessAttribute屬性標記,以提供給 客戶端項目的服務。當您在添加新域服務類對話框 框中選中啓用 客戶端訪問複選框時,EnableClientAccessAttribute屬性 自動應用於域服務。

當我使用VS2013時,嚮導不可用並且錯過了使用該屬性對其進行註釋的問題。

0

通常有以下形式

基地址+的ClientBin +的DomainService的全名(命名空間+類型名由-分隔) 所以你的情況應該看起來像

http://localhost:15066/ClientBin/WebApplication3-FactoryService.svc 

當您在瀏覽器中訪問此鏈接時,您將看到一個與此類似的頁面

Service 

You have created a service. 

To test this service, you will need to create a client and use it to call the service. You can do this using the svcutil.exe tool from the command line with the following syntax: 


svcutil.exe http://localhost:15066/ClientBin/WebApplication3-FactoryService.svc?wsdl 
You can also access the service description as a single file: 

http://localhost:15066/ClientBin/WebApplication3-FactoryService.svc?singleWsdl 
This will generate a configuration file and a code file that contains the client class. Add the two files to your client application and use the generated client class to call the Service. For example: 

C# 

class Test 
{ 
    static void Main() 
    { 
     HelloClient client = new HelloClient(); 

     // Use the 'client' variable to call operations on the service. 

     // Always close the client. 
     client.Close(); 
    } 
} 

Visual Basic 

Class Test 
    Shared Sub Main() 
     Dim client As HelloClient = New HelloClient() 
     ' Use the 'client' variable to call operations on the service. 

     ' Always close the client. 
     client.Close() 
    End Sub 
End Class 
+0

當我打開您提到的網址時,會顯示前面提到的「無法找到資源」錯誤消息。 – Elangovan

+0

@Elangovan您的網絡服務器是否運行該應用程序的宿主? – Jehof

+0

是的,它正在運行。我已經創建了一個測試頁面來測試使用GridView和DomainDataSource指向服務的服務。該服務正在工作..它也起作用。您可以在http://sdrv.ms/1cSMl4P中找到創建的測試應用程序 – Elangovan