servicestack,Asp.net Mvc 4,servicestack" /> servicestack,Asp.net Mvc 4,servicestack" />

Asp.net mvc 4 与MVC并排运行ServiceStack

Asp.net mvc 4 与MVC并排运行ServiceStack,asp.net-mvc-4,servicestack,Asp.net Mvc 4,servicestack,我设法用MVC4并行运行ServiceStack,但我仍然有一个小问题,希望有人能帮我解决 当通过VS2012执行调试会话时,一切都很完美——浏览器打开,第一页加载良好。但是当刷新页面并尝试进入http://localhost:62322/Content/site.css,将显示以下错误: Handler for Request not found: Request.ApplicationPath: / Request.CurrentExecutionFilePath: /Content/s

我设法用MVC4并行运行ServiceStack,但我仍然有一个小问题,希望有人能帮我解决

当通过VS2012执行调试会话时,一切都很完美——浏览器打开,第一页加载良好。但是当刷新页面并尝试进入
http://localhost:62322/Content/site.css
,将显示以下错误:

Handler for Request not found: 

Request.ApplicationPath: /
Request.CurrentExecutionFilePath: /Content/site.css
Request.FilePath: /Content/site.css
Request.HttpMethod: GET
Request.MapPath('~'): D:\All\Projects\ExampleProject\trunk\ExampleProject\ExampleProject\
Request.Path: /Content/site.css
Request.PathInfo: 
Request.ResolvedPathInfo: /Content/site.css
Request.PhysicalPath: D:\All\Projects\ExampleProject\trunk\ExampleProject\ExampleProject\Content\site.css
Request.PhysicalApplicationPath: D:\All\Projects\ExampleProject\trunk\ExampleProject\ExampleProject\
Request.QueryString: 
Request.RawUrl: /Content/site.css
Request.Url.AbsoluteUri: http://localhost:62322/Content/site.css
Request.Url.AbsolutePath: /Content/site.css
Request.Url.Fragment: 
Request.Url.Host: localhost
Request.Url.LocalPath: /Content/site.css
Request.Url.Port: 62322
Request.Url.Query: 
Request.Url.Scheme: http
Request.Url.Segments: System.String[]
App.IsIntegratedPipeline: False
App.WebHostPhysicalPath: D:\All\Projects\ExampleProject\trunk\ExampleProject\ExampleProject
App.DefaultHandler: DefaultHttpHandler
App.DebugLastHandlerArgs: GET|/Content/site.css|D:\All\Projects\ExampleProject\trunk\ExampleProject\ExampleProject\Content\site.css

但是,如果我删除AppHost.cs中的以下代码行,一切都会正常工作,并且总能找到site.css的处理程序:

SetConfig(new EndpointHostConfig { ServiceStackHandlerFactoryPath = "api", DefaultContentType = ContentType.Json });
我对该项目的需求是通过浏览器(所有控制器)的ServiceStack调用以及对/api的调用,这些调用应该由ServiceStack服务处理。 我按照这里的指示: 我的web.config如下所示:

<system.web>
    <!--...-->
        <httpHandlers>
          <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
        </httpHandlers>
    <!--...-->
</system.web>
<location path="api">
    <system.web>
      <httpHandlers>
        <add path="*" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" />
      </httpHandlers>
    </system.web>
    <!-- Required for IIS 7.0 -->
    <system.webServer>
      <modules runAllManagedModulesForAllRequests="true" />
      <validation validateIntegratedModeConfiguration="false" />
      <handlers>
        <add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
      </handlers>
    </system.webServer>
</location>

有人知道为什么site.css的处理程序有时找到,有时不找到吗?
此外,如果我在配置ServiceStack以包装整个服务器时出错,请向我指出。

根据您的尝试,我建议从普通的ASP.NET Web应用程序开始。一旦你的项目设置好了,使用NuGet你就可以

Install-Package ServiceStack.Host.AspNet 
或者只需按照配置进行操作。执行此操作将在根路径/处运行ServiceStack

在上面的设置中,您不需要这条线

SetConfig(new EndpointHostConfig { ServiceStackHandlerFactoryPath = "api", DefaultContentType = ContentType.Json });

添加它是告诉ServiceStack只处理包含
'/api'
路径的请求,而这不是您想要的路径

我有点困惑…您希望ServiceStack处理所有请求还是只处理对“/api”的请求?我希望它处理所有请求-控制器和/api。但是关于静态内容,例如“/content/site.css”,我不在乎它是由ServiceStack还是由MVC处理)如果您希望ServiceStack处理所有传入的请求,为什么需要MVC4?ServiceStack“接管”请求/响应管道。在安装过程中,MVC4控制器不会接收/处理任何传入请求。通过自定义路径(如/api)托管,ServiceStack可以处理特定路径的请求,而MVC4可以处理其他所有请求。没错,我不希望MVC处理我的请求。我想这个问题令人困惑。目前ServiceStack处理所有请求,这没关系,但有时会出现“未找到请求的处理程序”错误。这就是问题所在。安装这个软件包并不能为我提供所有的配置。也许我们彼此不了解-ServiceStack是否可能处理控制器/视图而不是MVC框架?我需要它的会话功能。谢谢这有用吗?不确定“处理控制器/视图”是什么意思。ServiceStack服务处理请求并提供响应。它在MVC控制器/视图中没有任何作用。谢谢,实际上有一个误解。我认为ServiceStack还应该处理常规MVC控制器,以便主要处理会话和身份验证功能。现在,我将其从根“/”路径的处理中移除,并且它工作得非常好——身份验证和会话仍然有效。