I am trying to remove one site binding. I am using powershell 2 and iis 7. I am able to remove all bindings with Remove-ItemProperty, and when i use Set-ItemProperty it removes all binding and just adds the new. I would be great if i could just rename or just remove a single binding without effecting the others. A sample would be great.
You shouldn't be using the itemproperty cmdltes (you could, but it's trickier.) There are dedicated cmdlets for this in the WebAdministration module. See:
help remove-webbinding -examples
-Oisin
I think xOn is correct that you should be using the higher level cmdlets but these commands based on the *-ItemProperty cmdlets allow you to modify an existing binding. I'm not sure of the syntax to remove one of the bindings though.
$bindings = (Get-ItemProperty -Path 'IIS:\Sites\Default Web Site' -Name Bindings)
$bindings.Collection[0].bindingInformation = '*:80:'
Set-ItemProperty -Path 'IIS:\Sites\Default Web Site' -Name Bindings -Value $bindings
Read the PowerShell Snap-in: Making Simple Configuration Changes to Web-Sites and Application Pools article to see how to work with the *-ItemProperty commands properly. There is a whole series of articles on Using Scripts to Automate Management to manage IIS 7
Related
I've got a web application in ASP.Net 5 with the source in VS Team Services. Using the Team Services build system, I'd like to deploy it directly to Azure for Continuous Deployment.
I've followed the steps here: https://msdn.microsoft.com/Library/vs/alm/Build/azure/deploy-aspnet5
However, when the website is deployed, only the new files are added and existing ones are overridden. Any deleted files are not removed. This means that extra controllers that were removed during refactoring (for example) still hang around.
Is there a way to force the deployment to wipe out any existing deployed website before putting the new one in place?
I've already run into an issue where the site is unable to deploy due to files being locked. I fixed this by wrapping the publish command in commands to start/stop the site:
Stop-AzureWebsite -Name $websiteName
. $publishScript -publishProperties $publishProperties -packOutput $packOutput
Start-AzureWebsite -Name $websiteName
In theory I could instead remove and create the website, but that seems a bit heavy handed...
Another option, using the publish profile:
Add this to your MSBuild parameters:
/p:SkipExtraFilesOnServer=False
Additional parameters here:
Valid Parameters for MSDeploy via MSBuild
I have a service which uses multiple dlls using reflection method . These dlls are loaded dynamically but once window service runs i am not able to update the dll or delete them etc .
I see Shadow copying as a viable solution . but i cannot find exact syntax if i want to set ShadowCopyfiles property of current appdomain to true.
I am using asp.net , and framework is 4.0
Here is a link to setting it up, hope that helps.
I'm trying to set up the automated (nightly) installation of my web site setup project. I can specify some install-time values on the command line; in particular, adding a TARGETSITE value defines the web site to which my new deployment will go.
How do I find the metabase key to my web site (eg. "/LM/W3SVC/213548468") in an IIS7 installation? (I do have IIS6 compatibility all set up, but I can't find anything about my site in the metabase.xml file.)
Also, since the web deployment setup projects are obviously outdated mechanisms (I guess they were too easy to use?), does anyone have a better idea for my nightly automated deployments?
In IIS 7 and above we do not use the metabase anymore and instead moved to a ".config" model where we store all the settings inside "%windir%\system32\inetsrv\config\applicationHost.config", that is where you will find all the information and settings you apply. If you enable IIS 6 compatibility we will run all the commands by translating them directly into the new ApplicationHost.config.
It would be useful to know more about how you are doing it today, If you use Managed code probably the best solution is using Microsoft.Web.Administration (Link) which includes a class called ServerManager to allow you to set everything you need.
If you use scripts (vbscript/jscript) you can continue using your scripts or instead use AHADMIN which is our new underlying COM configuration api.
if you use powershell we also have a PowerShell provider (http://www.iis.net/download/PowerShell) provide which should be the best in that case.
Also, if you actually want to package contents and configuration and other stuff like Registry settings, COM objects, GAC dlls, etc, you should use Web Deploy (http://www.iis.net/download/WebDeploy)
I know nothing about metabase, but from your posts I was able to cobble together the following:
import-module WebAdministration
$site = get-website | Where-object {$_.Name -eq "SiteName"}
$id=$site.ID
setup.msi /passive TARGETAPPPOOL=`"ASP.NET v4.0`" TARGETSITE="/LM/W3SVC/"$id
The backtick marks are the escape characters for powershell.
This question is a follow up to my question about sharing resources between web applications, because I have not yet found a good solution.
I have a web application with user controls and resources that are shared by three other web applications.
Solution
|
+-CommonControlsWebApp
| +- resources
| | +- images
| | +- scripts
| | +- stylesheets
| +- UserControls
|
+-WebApp1
|
+-WebApp2
|
+-WebApp3
This is what I know this far:
I can not compile CommonControlsWebApp into a single dll since I am creating user controls. This is only possible with custom server controls, where everything is in the code-behind file. So I need a way to share the ascx files between the four projects.
Copying the files from CommonControlsWebApp into the three other projects does not update their files in the solution explorer. I would have to 'add exting items' all in all three WebApps when a file is added or renamed in CommonControls.
Changing to the Web Site model would remedy this, but I am worried about the compile time for WebApp1-3 if I do this.
'Add as link' does not work for directories.
I could use Subversion to share the files between the projects, but i believe that this would require me to check the files in and out again all the time if I am developing a user control that I have to test through one of the WebApps.
Can it really be true that ASP.NET does not have a good solution for this? How are you guys organizing large web applications?
Edit: Thanks a lot for all the answers. I am going to copy my user controls with a build event for now, and then see if we have time to refactor them into server controls.
The way we do it at my present company is to make sure CommonControlsWebApp
is a WebApplication, not a web site. Then you use names for the folders that would help identify it as the common ones that are distinct from the individual web apps. (CommonUserControls instead of just UserControls)
In your other web apps, you create a virtual directory to the CommonUserControls, etc, and add a file based reference to the CommonControlsWebApp.dll
This requires you to use IIS for development (not casini), and Visual Studio won't believe that the controls really exist, but it will work at runtime, and you can build just fine with only warnings about blahblah.ascx or blahblah.master path invalid.
If you do use common master pages and Visual Studio 2008, you will need SP1 for 2008 and use a __fallback.master in the root of the individual web projects to go in to design mode.
However, I saw this on another thread, and I am going to look into doing more like this:
http://webproject.scottgu.com/CSharp/UserControls/UserControls.aspx
You could compile it into a dll
Turning an .ascx User Control into a Redistributable Custom Control
Brief Outline of the Steps
The basic steps to make this happen
are as follows:
Write your user control as you normally would, typically using the
Visual Studio designer.
Test it using a simple page before trying to deploy it.
Deploy the application to precompile it.
Grab the user control's assembly produced by the deployment step, and
you're essentially done: You have your
custom control.
Finally, use your custom control in other apps
Further info here http://www.nathanblevins.com/Articles/Compile-a-Web-User-Control-into-a-DLL-.Net-c-.aspx
In order to share controls between web apps, the only way I found was to either rewrite them into server controls or to use virtual directory to make the user controls actually in folder be in each project.
Unfortunately, asp.net doesn't really have a good solution for this. The same is true for sharing master pages.
You might consider using source control and sharing your controls at that level. We do this for a sizable user control library and it works quite well.
Using SourceGear Vault but you should be able to do this with any source control product.
Check this post for how to solve this issue.
The basic idea is to change your project to have a prebuild step to copy over the .ascx files to a subdirectory of the web application. Then just refer to those copies when using them. Of course you also need to reference the UserControls assembly as well.
One option is to try "Add existing" and in the dialog that appears, the OK button has a drop arrow next to it, change it to Add with a link.
If that doesn't work, rewrite your controls as Custom Controls.
It will take a little while, but will make it much more maintainable in the future.
hey this is not the best way to do things but i used to do this in my asp.net 1.1 days - you can try this - shift your user controls into a seperate project, and publish this project as a virtual directory under iis
as long as you are not using codebehind - your updates would be cool (only update shared user control folder)
if you do use codebehinds - redeploy the user control dlls into different projects
once you are done with this - map these user controls into all projects using their virtual paths
check these links - http://aspadvice.com/blogs/ssmith/archive/2006/10/05/Tip_3A00_-Share-User-Controls-Between-Applications-in-ASP.NET.aspx
AND
http://www.123aspx.com/redir.aspx?res=30887
I am trying to deploy my first custom aspx page in sharepoint:
Windows Server 2003
Microsoft Visual Studio 2008
VSeWSS 1.3
Latest Sharepoint Patches as of May 28, 2009
I am following this detailed howto:
http://geeksconnected.com/jamil/Lists/Posts/Post.aspx?ID=19
Unfortunately, it quickly becomes incomplete toward the bottom. I am running into two issues thus far:
How do you grant the VSeWSS Administrator privileges so that the "Deploy" option will work in Visual Studio?
It cuts off half of the <SafeControl> tag in the example, and I am not sure what to put after the PublicKeyToken= option. All current attempts completely break sharepoint.
Any solutions and explanations would be appreciated. Thanks in advance for any help.
Do yourself a favor and use WSPBuilder and its companion SPVisualDev instead of VSeWSS. Both of these tools are on CodePlex.com
They will take care of your safecontrols problem by adding that into the WSP file that any SharePoint administrator can install. (Frankly, modifying web.config by hand in a SharePoint environment is a big no-no in my mind, especially safecontrols)
They will also not need the elaborate 2-project spoof just to have a codebehind for an ASPX page that the article you quoted promotes. SPVisualDev will give you the option to do 'add new item' in visual studio and select a new Page or UserControl with codebehind, and take care of the deployment through WSP. Easy as!
Did you follow the instructions for post-install configuration of VSeWSS 1.3? http://blogs.msdn.com/steve_fox/archive/2009/03/18/vsewss-1-3-post-install-configuration.aspx
You probably need an account which is allowed to run stsadm.
2.The safe control tag should look like the following:
<SafeControl Assembly="[Assembly Name]" Namespace="[Namespace]" TypeName="*" Safe="True" />
To get the public key token you first have to sign the assembly (properties on the project->signing). Then you can build it and drop in the GAC (C:\Windows\assembly) and read the public key token directly in your explorer window.