我有一个C#应用程序,我正在尝试推送到分布式网络。应用程序在本地(一如既往)工作正常,但当我将其推送到网络时,它不起作用,因为它无法写入C:\ Windows \ Temp目录。我实际上并没有调用任何写入该目录的代码,但我认为它是由我调用webservice引起的,给出以下异常:
无法生成临时类(result = 1)。 错误CS2001:源文件'C:\ WINDOWS \ TEMP \ cyalinh1.0.cs'无法 发现错误CS2008:未指定输入'。请参阅InnerException 了解更多详情。
有没有办法阻止.NET写入Temp目录?它是.config文件中的设置吗?
更新
可以使用SGEN来阻止从Web服务创建那些动态创建的类吗?
答案 0 :(得分:4)
似乎webservices需要%SystemRoot%\ Temp(MSDN)的读/写权限。
来自here:
如果您正在运行ASP.NET 2.0或 上面,您可以指定所需的 权限与命令:
aspnet_regiis -GA MachineName\Account
此blog post包含有关如何更改用于此目的的SystemRoot \ Temp文件夹位置的说明(以及有关如何使用反射器确定web.config中的设置以设置类似情况的说明此)
答案 1 :(得分:1)
你遇到的问题是你正在使用一些自动生成临时代码的函数。它需要一个位置来做到这一点。所以是的,虽然您可以阻止它将代码写入该特定位置,但阻止它生成代码(必须存储在某处)的唯一方法是不使用生成临时类的函数。
答案 2 :(得分:0)
运行此代码的进程(与IIS相关的NT帐户?)应具有适当的权限集阅读更多http://www.google.com/search?q=asp.net+writing+files+permissions
答案 3 :(得分:0)
乔希,
我的猜测是,您正在进行的调用是尝试在目标PC上启动调试会话。在发生异常后,它正试图提取源文件。
根本原因可能是Web服务调用中的异常。
要减轻对temp文件夹的写入,您可以在目标计算机上禁用即时调试:
类似app app中的<system.windows.forms jitDebugging="false"/>
我做了一些挖掘。看起来问题可能出在服务器上,而不是客户端计算机上。如果您为托管Web服务的用户的临时文件夹添加读/写权限,则可能没问题。对不起上面的疯狂建议......
答案 4 :(得分:0)
搜索了这么多论坛并最终修复了它。这对我有用......你去了!!
右键单击c:\ windows \ temp文件夹
在安全选项卡下,将iisuser帐户添加到用户列表并提供读/写/执行访问权限(或)完整权限
重启网站
多数民众赞成!!! ...检查使用已部署的Web服务的应用程序
这应该做..