How can I simultaneously access my .db4o database from the Visual Studio's Object Manager Enterprise (OME) db4o plugin and from my application?
I'm starting out with db4o, integrating it with an ASP.NET MVC application. I have a two-layer repository access pattern set up using StructureMap for IoC and I keep getting DatabaseFileLockedException erros in VS when debugging while using OME.
When you want to access a db4o database file from multiple applications at the same time, you need the client-server-mode. So, either your application or a special "db-server only" application has to open the file as server, then both your application and the OME should be able to connect to this server.
The documentation has an example for this.
I never used OME, so I have no idea how to configure it there.
Related
I'm struggling with finding a good way not to check my secret passwords into my web.config.production type files (the ones that get transformed when Web Deploy publish is done). my workflow is that my team checks in and out of github and then when we are ready to do a production deployment, we have a custom web.config.deployment configuration that has all our real passwords in it. The problem is that all developers see those passwords.
I'm looking for suggestions for how to not have to put those passwords into our github repository with as a little friction as possible. That is, now, we have to rdp into our web server and manually change those passwords. Azure let's you set them in the azure portal, but we are not using azure.
One option is to store these app settings\connection strings in IIS. Then they will be applied to the web.config at start up and only members with access to your IIS administration can access them.
See these post:
http://forum.winhost.com/threads/setup-the-connection-string-in-web-config.7592/
http://technet.microsoft.com/en-us/library/cc753224(v=ws.10).aspx
app settings – Specify name/value pairs that will be loaded by your web application on start up. For .NET sites, these settings will be injected into your .NET configuration AppSettings at runtime, overriding existing settings.
connection strings – View connection strings for linked resources. For .NET sites, these connection strings will be injected into your .NET configuration connectionStrings settings at runtime, overriding existing entries where the key equals the linked database name.
I'm currently running a web solution , that a deployed to multiple azure cloud web roles , the only difference for each web role is web.config , though I'm trying to automatize the process. I'm using now azure powershell + console application to write web.config before each deploy for a specific webrole. Is there any better way to do this ? Does teamcity or any other tools can achieve this ?
Looks like it is possible for every CI server, not only TeamCity.
Fastest (but not cleanest) way would be to create as many build configurations, as you have web roles, implement web.config transform for it, and let MSBuild do it's magic further by deploying your application, running different build configurations.
I got my app running very well when I was testing locally, with Membership providers and Database. My nightmare began when I tried to run it in Windows Azure plataform.
Since then, I read a lot of articles about running aspnet_regsql in Sql Azure, and the new universal Membership providers. But I can't realize how to use the new Providers, and I'm getting really confused about System.Web.Providers and System.Web.Security classes and methods. When I tried to create a new user with the new Providers, the creation failed with a Null Exception, even if I had all the parameters placed and the build was ok.
My project is totally ready, I just need to upload it to the host.
How could I make it run in Windows Azure easily? Or should I learn how to use the new universal Providers and adjust all my project to that?
It appears that System.Web.Providers is required to run your application on Azure, at least without any heavy code lifting. Scott Hanselman outlines the basics of installing and using System.Web.Providers in his recent blog post: Introducing System.Web.Providers - ASP.NET Universal Providers for Session, Membership, Roles and User Profile on SQL Compact and SQL Azure.
Another resource that may be helpful is Wade Wegner's post Deploying the Windows Azure ASP.NET MVC 3 Web Role.
In short, after installing System.Web.Providers in your project using NuGet, it will reconfigure your web.config to include two connections strings, one for ApplicationServices, and another for the DefaultConnection. You will need to updated these with your Azure connection string, but make sure you append "MultipleActiveResultSets=True;" to both connection strings.
I have a solution that contains multiple integration test projects and one web application project. each integration project connects to the web application when running the tests. I would like for each test project to access the website with its own database connection. I have been trying to use the web deploy functionality built into visual studio. However I have been unable to figure out what I need to add to either the deployment package that is created and/or the post build event for the test projects to declare the binding port for the website when deployed. For example, I want integration project A to create and access the website located at http://localhost:83 and integration project B to create and access the website located at http://localhost:82. Could someone please explain:
Is there anything I need to do the deployment package ?
What do I need to add to my post-build events for my integration projects when deploying the package, so that the website is created at the correct port when building the project?
Update:
I'm wanting to deploy the same site to two different locations on my machine so that I can run both sets of integration tests at the same time.
Update 2:
I have researched the web deploy tool and it allows you to specify parameters that modify what is deployed when you call it from the command line. However I have found the documentation very confusing. http://technet.microsoft.com/en-us/library/dd568968(WS.10).aspx
Update 3:
I expect these to be two different websites, each pointing to there own database. If possible I would like a single package that can be deployed using msdeploy. Which will then be called in a post build event from each of the integration test projects. I would like to specify the connection string and deployment location from the post build script of the integration project.
you can try with webdev.server included in visual studio. VisualStudio use this for start a webserver when you debug. With this you can start a webserver in the desire port (if the port is not used currently).
I made a bat file for change some options.
check it.
::Begin of bat file
cd C:\Program Files\Common Files\microsoft shared\DevServer\10.0\
WebDev.WebServer40.exe /port:80 /path:"C:\PATHTOYOURWEBPROJECT" /vpath:"/NAMEOFYOURWEBPROJECT"
::End of bat file
You can acces in: http://localhost:80
I use the webserver40, but if you don't have net.4 or vs2010 you can try to find webserver[ xx version].exe
I hope that this will be helpful, and sorry for my broken english.
First off, you're approaching this the wrong way.
> I would like for each test project to access the website with its
own database connection.
Who is creating the DB connection? Your web site or the test project? For rest of your question to make sense, I presume its the web site (otherwise, Project A and Project B cannot share a connection out of the box).
If your website is making the connection, unless you're caching or having a static connection, there will be a new connection made as each request runs your your site on a new thread. Another simpler alternative is to take a query param and initiate a new connection based on that. If you seed it off the caller, you can also use it for more detailed logging.
Web Deployment projects are meant for deploying to integration servers, so that means you cannot access them by http://localhost... but the full FQDN of the server.
Most importantly, http://localhost:82/myApp and http://localhost:83/myApp are two different sites (unless you redirect from one of them to another one which in itself can cause additional issues) running the same codebase.
Having said that, you would then need to deploy your website twice and then all you need is to change the config/settings entry in Project A and B to point to these to different sites.
Hope this makes sense.
You can define virtual host configuration.
Refer this guide for more information.
http://docs.jboss.org/jbossas/guides/webguide/r2/en/html/ch07.html
I make a software using C# & my database is msaccess..Now I want to make a gateway which will be install in all pcs in a local network & i want to make connection with that database which is in a single computer...but i dont know what is the procedure to do that in C# windows application..please solve my problems...thanks..
I try to upload my data from client pc to the database which is in a server..I dont know the codeing to do that..pls send me some code for that...advanced thanks..
It would be helpful to know a bit more about what you're trying to achieve (you can edit your question to provide more information) but fundamentally you've got two options:
As its an access database you can put the .mdb file in a shared folder and it will be accessible to multiple instances of your application (store the location in the configuration data for your application). This will work - in some cases very well - but access can be a bit slow running over a network as its all file based.
Create a self hosted "web" service (WCF ideally, but I can't remember what your options are for VS2005) that provides the methods you need to interact with the database and then connect from your client applications to the "server" application over the network.
The "best" solution will depend on the detail of your problem and what you're trying to achieve. If each instance of the application accessing the database directly is the preferred choice then I'd strongly advise you look at using SQL Server Express instead of access.