2009-07-06 7 views
1

J'ai une application Web sur ASP.NET (C#) qui contient des composants précompilés. Je l'ai soutenu sans problème depuis un certain temps, en ajoutant des fonctionnalités et en les prolongeant. À l'heure actuelle, je suis confronté à une autre extension qui nécessite l'appel d'un service SOAP distant.Comment modifier le site Web ASP.NET précompilé? Visual Studio se plaint que le site est précompilé

J'ai essayé de le faire selon certaines recommandations que j'ai obtenues ici - via l'ajout de Web Reference, la création d'une classe proxy et tout ça, mais Visual se plaint que l'application est précompilée.

Voici la sortie réelle du compilateur:

The directory '/trxv/App_WebReferences/' is not allowed because the application is precompiled. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Web.HttpException: The directory '/trxv/App_WebReferences/' is not allowed because the application is precompiled.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:

[HttpException (0x80004005): The directory '/trxv/App_WebReferences/' is not allowed because the application is precompiled.]
System.Web.Compilation.CodeDirectoryCompiler.GetCodeDirectoryAssembly(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories, Boolean isDirectoryAllowed) +8805619
System.Web.Compilation.BuildManager.CompileCodeDirectory(VirtualPath virtualDir, CodeDirectoryType dirType, String assemblyName, StringSet excludedSubdirectories) +128
System.Web.Compilation.BuildManager.CompileWebRefDirectory() +31 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +312

[HttpException (0x80004005): The directory '/trxv/App_WebReferences/' is not allowed because the application is precompiled.]
System.Web.Compilation.BuildManager.ReportTopLevelCompilationException() +58 System.Web.Compilation.BuildManager.EnsureTopLevelFilesCompiled() +512 System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters) +729

[HttpException (0x80004005): The directory '/trxv/App_WebReferences/' is not allowed because the application is precompiled.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +8886319
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +85
System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +259

Version Information: Microsoft .NET Framework Version:2.0.50727.3053; ASP.NET Version:2.0.50727.3053

Existe-t-il d'autres méthodes plus ou moins simples (i.e. haut niveau.) De l'appel client SOAP, qui ne nécessiterait pas recompilation? Malheureusement, le code source original du système n'est pas disponible.

+0

Je pense que vous avez un problème plus général: comment étendre un site Web qui est précompilé, mais vous n'avez pas la source. Ce n'est pas seulement un problème de service Web. –

+0

Sorte de .. le fait est qu'il a deux composants qu'il utilise qui sont précompilés et utilisés dans le modèle Master. Je ne les touche pas. Je crée juste une nouvelle page, avec une nouvelle forme qui fait des appels de savon à distance ... Je peux aller jusqu'à l'ouverture de la connexion HTTP et parler XML directement au service, mais j'espère que .NET a un peu mieux/plus intelligent façons d'y parvenir. –

+0

Je vous suggère de modifier votre question pour ne pas pouvoir modifier le site précompilé. Je doute que le problème soit vraiment spécifique aux services Web. Élargir la question vous apportera plus d'attention - je suis sûr qu'il y a plus de développeurs ASP.NET que de développeurs de services Web. Enfin, considérons WCF, car Microsoft considère maintenant ASMX comme un «logiciel hérité». –

Répondre

1

Alex,

Notez mon édition la plus récente. Le problème a à voir avec le fait que vous n'avez pas d'application Web - vous avez un site Web. Ils sont uniques et étranges.

Je ne les utilise jamais sauf si je dois le faire, donc je n'ai jamais vu cette exception. Cela semble plutôt définitif, cependant. Voici comment résoudre ce problème:

Créez un projet de bibliothèque de classes distinct. Ajoutez la référence Web à la bibliothèque de classes et construisez-la. Ensuite, vérifiez si vous pouvez référencer la bibliothèque de classes dans vos pages Web. La bibliothèque de classes doit contenir les classes proxy.

+0

John, c'est une bonne idée! Merci beaucoup! Je vais le faire et voir ce qui se passe :) Garder cette question ouverte, juste au cas où. –

Questions connexes