首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dereference :驱动器c# asp.net

Dereference :驱动器c# asp.net
EN

Stack Overflow用户
提问于 2022-11-22 14:06:37
回答 1查看 38关注 0票数 0

我希望我的代码只从相对路径抓取我的sql脚本,从我的项目文件夹开始,而不是从绝对路径。我正在使用web表单,并计划在服务器上发布此代码,因此我需要按路径取消引用。

CurrentDomain.BaseDirectory:

代码语言:javascript
复制
"C:\\Users\\username\\Documents\\folder_name\\project_name\\project_name\\"

抓取文件时的样子:

代码语言:javascript
复制
"C:\\Users\\username\\Documents\\folder_name\\project_name\\project_name\\sql_script"

我想让它看起来像:

代码语言:javascript
复制
"project_name\\sql_script" 

或者类似的东西

代码语言:javascript
复制
            using (SqlConnection mer = new SqlConnection(@"Data Source = server_address; Initial Catalog = server_name; Integrated Security=SSPI"))
            {
                {
                    mer.Open();
                    string path = Server.MapPath("~/mergeSQL.sql");
                    string mergeScript = System.IO.File.ReadAllText( path);
                    System.Collections.Generic.IEnumerable<string> commandStrings = Regex.Split(mergeScript, @"^\s*GO\s*$", RegexOptions.Multiline | RegexOptions.IgnoreCase);

                    foreach (string commandString in commandStrings)
                    {
                        if (commandString.Trim() != "")
                        {
                            using (var command = new SqlCommand(commandString, mer))
                            {
                                command.ExecuteNonQuery();
                            }
                            Label2.Text = "Query merged";
                        }
                    }

                }
            }
        }
EN

回答 1

Stack Overflow用户

发布于 2022-11-24 23:40:54

windows文件名很好,只是一个完整的路径字符串。

因此,如果您的网站中有一个文件夹,请说:

代码语言:javascript
复制
 sql_scripts

那么对于基于web的,它们是自动的。

代码语言:javascript
复制
 http:yourwebsite/sql_scripts/mysql.txt

但是,该文件夹当然不会公开。

并且要记住标记、基于web的url和后面的代码之间的区别。

后面的代码仍然=普通简完整的窗口路径名称。

因此,在代码中,您可以获得基本站点和路径--不管项目运行在哪里或哪个服务器。

代码语言:javascript
复制
 string MyFile = Server.MapPath(@"~/sql_scripts/myfile.txt")

上面的内容将返回一个完全限定的窗口路径名。

虽然网站网址可能受到限制,但背后的代码不是,并且100%忽略网站安全设置。

所以,虽然上面不是一个相对路径名,但是您并不关心,因为它将被转换成一个完整的合法路径名,正如我所提到的,后面的所有代码都是使用的(一个简单的平面jane完全限定的windows路径名称)。

所以,

代码语言:javascript
复制
web based markup = path name from and relative to web root
code behind = always a full legal path name to file.

因此,您可以使用Server.MapPath获得合法文件名+完整路径

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74533926

复制
相关文章

相似问题

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