3
在ServiceStack Razor项目上工作时,看到不一致的结果。问题是有些项目开始无法在我的开发环境中提供cshtml页面(Win 8,VS 2012)。在调试主页(default.cshtml)使用IIS快递返回:ServiceStack Razor cshtml页面没有在开发机器上提供
Forbidden
Request.HttpMethod: GET
Request.PathInfo:
Request.QueryString:
Request.RawUrl: /default.cshtml
App.IsIntegratedPipeline: True
App.WebHostPhysicalPath: C:\Users\jim\Documents\Visual Studio > 2012\Projects\Test.Web\Test.Web
App.WebHostRootFileNames: [about.cshtml,apphost.cs,default.cshtml,global.asax,global.asax.cs,packages.config,pricing.cshtml,privacy.cshtml,reconcilable.web.csproj,test.web.csproj.user,terms.cshtml,web.config,web.debug.config,web.release.config,bin,obj,properties,public,services,views]
App.DefaultRootFileName: default.cshtml
如果我要求在不同的URL我看到以下页面:
Handler for Request not found:
Request.ApplicationPath:/
Request.CurrentExecutionFilePath: /terms
Request.FilePath: /terms
Request.HttpMethod: GET
Request.MapPath('~'): C:\Users\jim\Documents\Visual Studio 2012\Projects\Test.Web\Test.Web\
Request.Path: /terms
Request.PathInfo:
Request.ResolvedPathInfo: /terms
Request.PhysicalPath: C:\Users\jim\Documents\Visual Studio 2012\Projects\Test.Web\Test.Web\terms
Request.PhysicalApplicationPath: C:\Users\jim\Documents\Visual Studio 2012\Projects\Test.Web\Test.Web\
Request.QueryString:
Request.RawUrl: /terms
Request.Url.AbsoluteUri: http://localhost:51000/terms
Request.Url.AbsolutePath: /terms
Request.Url.Fragment:
Request.Url.Host: localhost
Request.Url.LocalPath: /terms
Request.Url.Port: 51000
Request.Url.Query:
Request.Url.Scheme: http
Request.Url.Segments: System.String[]
App.IsIntegratedPipeline: True
App.WebHostPhysicalPath: C:\Users\jim\Documents\Visual Studio 2012\Projects\Test.Web\Reconcilable.Web
App.WebHostRootFileNames: [about.cshtml,apphost.cs,default.cshtml,global.asax,global.asax.cs,packages.config,test.web.csproj,test.web.csproj.user,terms.cshtml,web.config,web.debug.config,web.release.config,bin,obj,properties,public,services,views]
App.DefaultRootFileName: default.cshtml
App.DefaultHandler: default.cshtml
App.DebugLastHandlerArgs: GET|/terms|C:\Users\jim\Documents\Visual Studio 2012\Projects\Test.Web\Test.Web\terms
我可以创造一个干净的新项目为页面提供正确的服务,但具有相同web.config,AppHost,Global.asax文件的较旧项目失败。代码如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
<buildProviders>
<add extension=".cshtml" type="ServiceStack.Razor.CSharpRazorBuildProvider, ServiceStack.Razor" />
</buildProviders>
</compilation>
</system.web>
<!-- Required for IIS 7.0 -->
<system.webServer>
<handlers>
<add path="*" name="ServiceStack.Factory" type="ServiceStack.WebHost.Endpoints.ServiceStackHttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" />
</handlers>
</system.webServer>
<appSettings>
<add key="webPages:Enabled" value="false" />
</appSettings>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="ServiceStack.Razor.ViewPage">
<namespaces>
<add namespace="ServiceStack.Html" />
<add namespace="ServiceStack.Razor" />
<add namespace="ServiceStack.Text" />
<add namespace="ServiceStack.OrmLite" />
</namespaces>
</pages>
</system.web.webPages.razor>
</configuration>
public class Global : HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
new AppHost().Init();
}
}
public class AppHost : AppHostBase
{
public AppHost() : base("test", typeof(AppHost).Assembly) { }
public override void Configure(Funq.Container container)
{
Plugins.Add(new RazorFormat());
}
}
当项目部署到服务器时,我看不到相同的问题。有人能够给我一些关于可能导致这种情况的想法吗?
我得到了同样的问题;你发现问题是/是什么? – KBoek
我也是,任何解决方案? –
有一个工作。如果更新,请将您的cshtml文件属性更改为复制并检查它是否正常工作。这是错误的,但可能会有所帮助。 – kunjee