[英]When Will the Default Constructor of Service.svc in a WCF Service is executed?
[英]WCF Service on IIS. How to get rid of the “Service.svc” component in the URL path?
我在IIS上托管了WCF服務。 出於商業原因,我無法發布此實例的公共URL,但是我相信您會明白我的意思:
問題是,為了到達我的端點,似乎我已經將Service.svc
作為路徑段的一部分包括在內 ,即,我必須使用這樣的URL:
http://<domain>/<app-name>/Service.svc/<relative-path>
如何避免這種情況? 我的意思是,我想通過以下方式訪問我的服務:
http://<domain>/<app-name>/<relative-path>
在開發過程中自托管服務時,我完全能夠做到這一點。
最后,但這不是那么超驗,瀏覽到http://<domain>/<AppName>/Service.svc
URL將顯示標准服務信息頁面:
有沒有辦法我也可以阻止這種訪問?
第一部分:不具有URL的“ service.svc”部分,可以使用ASP.NET路由功能和ServiceRoute類-路由的前綴為空字符串。 http://blogs.msdn.com/b/endpoint/archive/2010/01/25/using-routes-to-compose-wcf-webhttp-services.aspx上的帖子顯示了如何完成此操作。
第二部分:為防止顯示“幫助”頁面,可以通過config(或使用自定義服務主機工廠的代碼)禁用它。 這是通過config完成的方法:
<serviceBehaviors>
<behavior>
<serviceDebug httpHelpPageEnabled="false" httpsHelpPageEnabled="false"/>
</behavior>
</serviceBehaviors>
該行為沒有“名稱”屬性,這意味着它將用作服務的默認行為。
有關像我這樣的.net新手的分步說明:
打開您的Web.config
文件,並確保將aspNetCompatibilityEnabled
設置為true:
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
右鍵單擊項目,然后單擊添加->新建項目。 找到“全局應用程序類”。 這將自動生成Global.asax文件。
打開Global.asax文件,並確保Application_Start
方法如下所示:
protected void Application_Start(object sender, EventArgs e) { RouteTable.Routes.Add(new ServiceRoute("", new ServiceHostFactory(), typeof(MyServiceImplementation))); }
(使用您在Service1.svc中調用的任何類更改MyServiceImplementation
)
確保已添加以下參考:
using System.ServiceModel.Activation; using System.Web.Routing;
如果找不到這些文件,並且您使用的是.net 4.5之前的版本,請確保使用的是完整安裝而不是客戶端安裝。 還要確保已添加了這些程序包引用(右鍵單擊項目,單擊“添加”->“引用”,找到程序包名稱並確保已選中)。
您只需不公開服務元數據即可達到此目的-只需注釋端點
<endpoint address="mex" binding="mexHttpBinding" name="IMetadataExchange_mexHttpBinding" contract="IMetadataExchange" />
根據網址-我只同意@Edmund Y-他提供了有用的鏈接
我只是想知道我為實現@carlosfigueira的建議所做的是最干凈的事情:
我最終使用了Global.asax文件,並在Application_Start
處理程序中添加了一個帶有空routePrefix的ServiceRoute
。 我不太確定為什么我在@Edmund Y共享的文章中讀到為什么使用WebServiceHostFactory
和ServiceHostFactory
: ServiceRoute + WebServiceHostFactory殺死了WSDL? 如何使用?wsdl創建無擴展WCF服務 。
無論如何,我認為我設法解決了我所需要的,感謝您的幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.