2013-08-27 117 views
0

内我有一个简单的主Web项目。我还有第二个与主项目相关的项目,但它的目的是成为一个纯粹的骨骼网络服务。我想将Web服务项目放入我的主项目中常规文件夹内的版本文件夹内。例如,名为“WebService的”与第1版的子目录下,所谓的“V1”在我的主要项目中的文件夹会导致以下网址:

URL来访问在家里控制器的主要项目的索引操作:http://myMainProjectUrl.com/Home/Index
URL访问在家里控制器Web服务的V1的索引操作:http://myMainProjectUrl.com/WebService/v1/Home/Index

设立这样的项目之后,试图访问Web服务时,我得到一个404。我能在我的Global.asax做的主要项目,或IIS(或任何地方),这样这个URL映射方式工作?提前致谢。ASP.NET MVC 4项目放在另一个ASP.NET MVC 4项目的文件夹

回答

0

在这里和那里尝试新事物后,答案是IIS。

在IIS你可以添加你的网站里面的“应用程序”。

  1. 右键单击该文件夹中的网站,你的“第二个项目”是(在我的情况下,文件夹是“WebService” )并选择“添加应用程序...” 。
  2. 别名输入您想要的URL的结束路径(在我的情况下,我的别名将是“v1”)。
  3. 将“物理路径”指向您的第二个项目所在的文件夹(在我的情况下,我的Web服务项目驻留在“WebService/v1/webservice_v1”中)。
  4. 点击OK,大功告成。
0

您应该能够通过修改位于App_Start/WebApiConfig.cs

例如默认路由来实现这一

public static void Register(HttpConfiguration config) 
{ 
    config.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{action}/{id}", 
     defaults: new { Action = "Get", id = RouteParameter.Optional } 
    ); 
} 

变化“API/{控制器}/{行动}/{ID} 为 “/ WebService的/ {控制器}/{行动}/{ID}”

+0

嗯,这似乎是一个很好的线索。但现在我想,我想要版本的Web服务,所以我将分开版本的项目,如文件夹“WebService/V1”下的项目WebService_V1和文件夹“WebService/V2”下的WebService_V2等上。我试图改变“routeTemplate”向“Web服务/ V1/{控制器}/{行动}/{ID}”,但没有做的伎俩。有任何想法吗? – AxiomaticNexus

+0

尝试安装NuGet包“ASP.NET的WebAPI路线调试器”。然后你可以测试你的路线,它应该提供更多的信息,为什么路线不起作用。 – sharpguru