ASP.NET не знает об этом. Вам нужно будет запросить IIS для списка документов по умолчанию.
Причина этого заключается в том, что IIS будет искать в вашей веб-папке первый соответствующий файл в списке документов IIS по умолчанию, а затем передавать соответствие соответствующему расширению ISAPI для этого типа файла (по расширению) в сопоставлениях сценария. *
Чтобы получить список документов по умолчанию, вы можете сделать следующее (используя веб-сайт по умолчанию в качестве примера, где IIS Number = 1):
using System;
using System.DirectoryServices;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
using (DirectoryEntry w3svc =
new DirectoryEntry("IIS://Localhost/W3SVC/1/root"))
{
string[] defaultDocs =
w3svc.Properties["DefaultDoc"].Value.ToString().Split(',');
}
}
}
}
В таком случае следует выполнить итерацию массива defaultDocs
, чтобы увидеть, какой файл существует в папке, первое совпадение является документом по умолчанию. Например:
// Call me using: string doc = GetDefaultDocument("/");
public string GetDefaultDocument(string serverPath)
{
using (DirectoryEntry w3svc =
new DirectoryEntry("IIS://Localhost/W3SVC/1/root"))
{
string[] defaultDocs =
w3svc.Properties["DefaultDoc"].Value.ToString().Split(',');
string path = Server.MapPath(serverPath);
foreach (string docName in defaultDocs)
{
if(File.Exists(Path.Combine(path, docName)))
{
Console.WriteLine("Default Doc is: " + docName);
return docName;
}
}
// No matching default document found
return null;
}
}
К сожалению, это не будет работать, если вы находитесь в среде ASP.NET с частичным доверием (например, общий хостинг).