首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RazorEngine解析抛出无法编译

RazorEngine解析抛出无法编译
EN

Stack Overflow用户
提问于 2013-04-04 15:50:58
回答 2查看 3.2K关注 0票数 5

我正在尝试用下面这行代码编译一个剃刀文件

代码语言:javascript
复制
RazorEngine.Razor.Parse("Hello world");

但它只是抛出

代码语言:javascript
复制
base {System.Exception} = {"Unable to compile template. Source file 'C:\\Windows\\TEMP\\vlu4zahf.0.cs' could not be found\n\nOther compilation errors may have occurred. Check the Errors property for more information."}

error属性如下所示:

代码语言:javascript
复制
[0] = {error CS2001: Source file 'C:\Windows\TEMP\vlu4zahf.0.cs' could not be found}
[1] = {warning CS2008: No source files specified}

所以没有好的信息。

我正在运行.NET 4.0和Razor Engine 3.2.0.0

更新1

我已经在RazorEngine中找到了这一行的错误

代码语言:javascript
复制
Tuple.Create(
                compileResult.CompiledAssembly.GetType("CompiledRazorTemplates.Dynamic." + context.ClassName),
                compileResult.CompiledAssembly);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-16 14:40:42

这很可能是编译剃刀文件的用户帐户的权限问题。确保它在C:\Windows\Temp上拥有除完全控制权限之外的所有权限

背景信息请看这里:http://social.msdn.microsoft.com/Forums/en-US/asmxandxml/thread/85f9b330-a938-4afe-a615-db83085e52d2/

票数 8
EN

Stack Overflow用户

发布于 2015-02-27 11:37:18

禤浩焯的回答引导我进行了一些研究,了解为什么首先需要/使用c:\windows\temp。事实证明,此目录的使用与我为应用程序创建的IIS应用程序池直接相关。我使用的池将"Load User Profile“设置为False。事实证明,默认情况下,此属性设置为False只是为了保留针对IIS 6运行的应用程序的向后兼容性(在load配置文件选项存在之前)-并且兼容性问题仅限于此类应用程序利用%temp%目录的情况。尽管这是默认设置,但根据微软的说法,将其设置为False并不是首选的做法。

相反,此设置应设置为True,这样做将在运行应用程序池的用户配置文件下为您的应用程序提供一个%temp%目录。这样做可以减少更改系统卷权限的需要。

可以在IIS管理器中的AppPool的高级设置中访问此设置。

这也可以在powershell (以管理员身份运行)中通过运行以下命令来完成:

代码语言:javascript
复制
Import-Module WebAdministration
$appPoolName = "ReplaceWithYourAppPoolName"
$appPool = Get-Item IIS:\AppPools\$appPoolName
$appPool.processModel.loadUserProfile = $true
$appPool | Set-Item
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15805434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档