2012-01-19 114 views
0

我有Windows服務中運行的WCF服務。這工作正常,我能夠發送/接收SOAP消息到服務器。我可以從同一個Windows服務託管一個WCF和WebService嗎?

問題是我還希望能夠從同一服務(或更具體地說來自同一端口,因此只有一個端口需要可以訪問因特網)訪問靜態文件(簡單下載)。

用我現有的服務,我有方法,如:

public interface IMyServerService 
{ 
    [OperationContract] 
    [WebInvoke] 
    string ListValue(string arg1); 
} 

現在我已嘗試添加以下內容:

[OperationContract] 
    [WebGet(BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/DownloadFile")] 
    System.IO.Stream DownloadFile(); 

通過以下實現:

public System.IO.Stream DownloadFile() 
    { 
     var context = System.ServiceModel.Web.WebOperationContext.Current.OutgoingResponse; 

     context.Headers.Add(System.Net.HttpResponseHeader.CacheControl, "public"); 
     context.ContentType = "text/plain"; 
     context.StatusCode = System.Net.HttpStatusCode.OK; 

     return new System.IO.FileStream(@"C:\test.txt", System.IO.FileMode.Open, System.IO.FileAccess.Read); 
    } // End of DownloadFile 

我的目標是訪問https://service/DownloadFile,但是當我嘗試出現錯誤400時。

我想我的問題是,我能夠從相同的WCF服務內做到這一點,還是應該創建第二個服務來做到這一點?

回答

1

如果您設置了正確的綁定(例如您的新功能的webHttpBinding),您可以。問題是,如果你?通常,ServiceContract將特定功能組合在一起。如果這個文件下載是與現有服務無關的新東西,我會創建一個新文件。

相關問題