Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确实很简单的C#文件保存问题_C#_Web - Fatal编程技术网

确实很简单的C#文件保存问题

确实很简单的C#文件保存问题,c#,web,C#,Web,我们有一个定制的web应用程序,它是使用C#在ASP(看起来像是2.0)上构建的。我们最近将其从IIS6环境转移到IIS7环境。我们遇到了一个问题,即设置用于查看通过搜索检索到的图像的页面抛出了一个错误。代码获取图像文件的副本并将其放入工作目录中,将副本重命名为用户名 bmpList[0].Save("c:\\inetpub\\wwwroot\\SiteName\\Work\\" + ((ImageUser)Session["ImageUser"]).Username + ".TIF", inf

我们有一个定制的web应用程序,它是使用C#在ASP(看起来像是2.0)上构建的。我们最近将其从IIS6环境转移到IIS7环境。我们遇到了一个问题,即设置用于查看通过搜索检索到的图像的页面抛出了一个错误。代码获取图像文件的副本并将其放入工作目录中,将副本重命名为用户名

bmpList[0].Save("c:\\inetpub\\wwwroot\\SiteName\\Work\\" + ((ImageUser)Session["ImageUser"]).Username + ".TIF", info, encParams);
我知道wwwroot不再是路径中的有效目录,所以我将其更改为

bmpList[0].Save("c:\\inetpub\\SiteName\\Work\\" + ((ImageUser)Session["ImageUser"]).Username + ".TIF", info, encParams);
保存了文件,重新启动并清除了我的浏览器缓存,但仍然收到错误

A generic error occurred in GDI+. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
Exception Details: System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.

Source Error: 
Line 180:                       
Line 181:                    //bmpList[0].Save("c:\\pi\\" + ((ImageUser)Session["ImageUser"]).Username + ".TIF", info, encParams);
Line 182:                    bmpList[0].Save("c:\\inetpub\\wwwroot\\SiteName\\Work\\" + ((ImageUser)Session["ImageUser"]).Username + ".TIF", info, encParams);
Line 183:
Line 184:                    for (int a = 1; a < numFiles; a++)


Source File: c:\inetpub\Sitename\SiteApp\View.aspx.cs    Line: 182 

Stack Trace: 
[ExternalException (0x80004005): A generic error occurred in GDI+.]
System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) +615209
View.Page_PreRender(Object sender, EventArgs e) in c:\inetpub\SiteName\SiteApp\View.aspx.cs:182
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +25
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +42
System.Web.UI.Control.OnPreRender(EventArgs e) +11056766
System.Web.UI.Control.PreRenderRecursiveInternal() +108
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3394
GDI+中发生一般错误。
描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源。
异常详细信息:System.Runtime.InteropServices.ExternalException:GDI+中发生一般错误。
源错误:
第180行:
第181行://bmpList[0]。保存(“c:\\pi\\”+((ImageUser)会话[“ImageUser”])。用户名+“.TIF”,信息,参数);
第182行:bmpList[0]。保存(“c:\\inetpub\\wwwroot\\SiteName\\Work\\”+((ImageUser)会话[“ImageUser”])。用户名+“.TIF”,信息,附件参数);
第183行:
第184行:for(int a=1;a

这似乎是一件相当简单的事情,但由于某些原因,它没有更新(错误中的路径保持完全相同)。我缺少什么?

几乎所有的时间(即99.9999%的时间),当使用GDI时,“发生一般性错误”意味着您试图保存到的目录没有适当的权限。通常,您需要确保目录允许asp.net修改文件。您是否检查了要将文件保存到的目录的权限

奇怪的是,答案其实很简单。。。几乎。 改变。。。 c:\inetpub\wwwroot\SiteName\Work\ 到 c:\inetpub\SiteName\Work\
工作。在我更改了.cs文件上的代码后,浏览器继续给我同样的错误,原因是他们绑定到站点的IP仍然属于以前版本的计算机,因此DNS将我路由到该框。所有的人都说我在错误的OSI模型层。我只是在同一个盒子上构建一个测试版本,并将IP从损坏的站点解除绑定并绑定到我的第二个测试站点时才发现它,我发现我想要的IP不是一个选项(因此它必须是手动输入的)。生活和学习。感谢您的输入和建议。

您的浏览器是否正在缓存某些内容?如何加载图像?它可能仍然有一个打开的文件句柄,因此不允许保存。您可以用错误路径显示错误吗?你帖子中的那个只显示了与你的规范相匹配的源位置。
0x80004005
闻起来像是
错误\u访问被拒绝
,即使存在
设施\u ITF
。1)我已经清除了缓存,尝试了不同的浏览器和另一台机器,结果相同。我想是的,保存之前,请使用
Directory.Exists
方法查看路径是否有效。我认为问题在于页面试图加载的目录不存在。我已经更改了代码,但由于我在错误页面上收到相同的路径,因此没有更新到更改的路径。是否有指向不存在的目录的配置文件?您能调试代码并查看它是否使用了可能来自配置文件的路径吗?您真的不应该使用这些路径,相反,只需使用指向同一位置的应用程序,您无需硬编码硬盘上的路径。我没有编写此应用程序,我只是将其跨服务器迁移,但您的建议非常完美,我将实施它。我不熟悉C(自从2年前的C++大学课程以来,我没有做过任何事情),但是相对的路径绝对是正确的。我习惯于powershell的$会议:P