I am not getting which folder I should select for physical path selection while creating a new website in browser
you can give your own the physical path to your IIS website
it may be
%SystemDrive%\inetpub\wwwroot -> Default path
Or you can specify your own directory based on your requirement.
The physical path contains some information related to iis configuration.
Related
I have a shared path \\mynetworkshare\myfolder which has images stored.
I have a domain user mydomainuser which was granted with read access to files in that path
I hosted website on IIS. I created a Virtual Directory within my IIS Site with an Alias myphotos pointing to the Physical path \\mynetworkshare\myfolder. I have also clicked on Connect as... button in the Add Virtual Directory dialog box and provided my mydomainuser credentials.
I clicked on the newly created virtual director myphotos and click on Content View in the right pane. I'm able to view all my photos within IIS. From this, I assume the setup of virtual directory to my shared drive is correct.
Now, the question is how do I access this Virtual Directory or Files in it from my code?
I have tried below
var filePath = Server.MapPath("~/myphotos/" + "myimage.jpg");
When I write the filePath to a log file, I see it is trying to map to a physical folder setup within my website folders.
Instead of pointing to
\\mynetworkshare\myfolder\myimage.jpg
it is pointing to
d:\wwwroot\inetpub\mywebsitefolder\myphotos\myimage.jpg
I know Server.MapPath resolves to a physical path of hosted site but I wonder if it behaves the same with my virtual directory.
Or Do I need to let ASP.Net know somehow that myphotos is a virtual directory created on IIS? Or Am I on the wrong path to get files? Do I need to write code something different?
You can get the physical path from IIS (7+) using System.Web.Administration (available in NuGet)
var physicalPath = new Microsoft.Web.Administration.ServerManager()
.Sites["Default Web Site"]
.Applications["/MyApplication"]
.VirtualDirectories["/MyVirtualPath"]
.PhysicalPath;
If the virtual directory is in the root, the Application is "/"
What's specified in the Connect as... may only apply to direct web requests. To access the files from your application, you will need to configure the Application Pool to use mydomainuser as its Identity (found under Advanced Settings...), or you will need to grant share permissions to the computer running IIS if the Application pool uses a built-in account.
The step that was missing is converting Virtual Folder as Application.
Right-click the Virtual Folder myphotos, click on Convert to Application
The link here should explain the steps
Without adding Server.MapPath, it works fine. For example
image.src = "~/myphotos/myimage.jpg"
I have configured a website in IIS with a host header, so that I can call the url customhostheader/ and the website will be shown.
When I try to publish my web project, I get the error that some sections in web.config are registered as allowDefinition=MachineToApplication. But I cannot convert the website in to an application in IIS. I can only convert virtual directories into IIS applications, but I don't want the much longer url http://customhostheader/virtualdirectoryname, I prefer to have just http://customhostheader.
Any ideas what I could do?
Thanks.
Add an application with the name customhostheader which is pointing to your published code (parent of bin folder)
To do this
Right click on "Default Web Site" in IIS and select "Add
Application"
Give alias as customhostheader and provide the path to your application.
Edit based on the comment
Each website by default contains an application. So we just needs to make sure the path of the website is correct.
The following two points should be enough to set up the correct path
The path should be parent of bin folder
The web.config should be present on the path
The default document can be set through the IIS or web.config
I have configured the physical path (SAN Storage) in advanced settings in the IIS
Looks like the path has been changed recently and the files are not getting saved
Is there a way where I can check what the previous value was for the particular field??
I need to know what was the previous value for Physical Path
PFB the image
I don't think there's a history for that in IIS.
If you don't have much directory in wwwroot and you know how the website looks, you can try setting the physical path to the directory within inetpub > wwwroot starting with the root.
If you are lucky, someone might have enabled the logging for IIS configuration. Check if thats the case and you can see the changes.
check following article for reference
IIS config auditing
I am getting this error when I try to run an ASP.NET application without a web.config file.
The requested page cannot be accessed because the related configuration data for the page is invalid
as I read, we can run .NET applications without web config files, but when I tried it is giving me the error. I am using iis 7 on windows 7 machine.
When I create the application virtual directory inside inetpub/wwwroot it works fine. Why doesn't the other directory location?
One reason could be the version of .NET framework (on IIS or application pool level) is different from the application one.
Another reason could be if there are modules used in your web.config which the current configuration of IIS doesn't recognize. E.g. URL rewrite or other optional modules, which you have to explicitly enable before using.
This can be a reason:
If there is no Web.config file in the
UNC directory, IIS 7.0 uses the rules
that are defined for the parent
directory. For the Web content to be
served in this scenario, the
worker-process identity must have
access to the whole content directory.
Otherwise, the Web request is
rejected.
Details here.
You need to set permission for your Website folder or copy them to wwwroot folder.
If you choose to set permission, there are two ways:
Right click on Your Website folder, or
Right click to Your Website in IIS
Then select Edit permission and Add a permission (IUSR - default iis user)
I want to create a web site in my setup project using Microsoft.Web.Administration.ServerManager.Sites.Add method, but it needs a physical path of the web site to be specified. I want the web site to be created at it's default location. How can I find out the physical path of the default location?
Typically when adding a new site this would have a different directory to any pre-existing site. For example IIS comes preconfigured with "Default Web Site" site and the physical path for this typically points to:
%SystemDrive%\inetpub\wwwroot
You would not normally create a second site that also points to that directory. As an example you might configure the second site to point to (or any other preferred location):
%SystemDrive%\inetpub\wwwroot_secondsite\
That said, if you really want to have multiple sites with the same physical path then you should be able to use Microsoft.Web.Administration.ServerManager.Sites property to enumerate all current sites and from there extract the physical path.