2012-11-19 44 views
1

我將舊的非MVC代碼集成到MVC 4項目中。舊代碼的WCF服務的根目錄和API子文件夾中的.SVC擴展名受基本認證。在MVC中調用WCF服務時找不到HTTP資源

首先,向所有SVC文件發佈諸如(http://mysite/myservice.svc/DoCommand)的404錯誤。然後,我添加這樣的:

routes.IgnoreRoute( 「{allsvc}」,新的{allsvc = @ 「 .SVC(/.*)。?」});

現在可以調用站點根目錄下的SVC文件。但是,在API子文件夾中的文件SVC現在回到這個:

<Error> 
    <Message> 
    No HTTP resource was found that matches the request URI 'http://mysite/API/myservice.svc/DoCommand'. 
    </Message> 
</Error> 

如果我不包括DoCommand,然後我得到的標準WCF信息屏幕。

哦,最後,這隻發生在產品開發中,與本地主機相反,一切正常。

非常感謝您的幫助。謝謝。

回答

0

您是否嘗試過在web.config中設置relaxedUrlToFileSystemMapping="true",如Phil Haack所述。請參閱此相關的問題:ApiController returns 404 when ID contains period

+0

沒有工作。 http://mysite/myservice.svc/DoCommand工作; http://mysite/API/myservice.svc/DoCommand不起作用,所以這是某種路由問題。 – user1044169

+0

你可以發佈你的路線? – Mightymuke

+0

而這就是它令人困惑的地方。在RouteConfig.cs中我有routes.IgnoreRoute(「{* allsvc}」,新{allsvc = @「。* \。svc(/.*)?」});,所以我想MVC忽略所有對SVC文件的請求。那麼,MVC之外的哪些配置會路由到SVC文件?我不知道在哪裏可以找到。 – user1044169

1

答案就在這裏Service Stack on MVC4

的問題是,我的子文件夾名爲API,它使用隨所安裝的與MVC的WebAPI基礎設施API的命名衝突。